Nastavení Bucket Policy uložené v souboru:
aws s3api put-bucket-policy --profile test_user --endpoint-url https://s3.cl2.du.cesnet.cz --bucket BUCKET-NAME --policy file://C:/Users/User/Downloads/example_policy_tenant-ro.json
aws s3api put-bucket-policy --profile test_user --endpoint-url https://s3.cl2.du.cesnet.cz --bucket BUCKET-NAME --policy file:///home/user/Downloads/example_policy_tenant-ro.json
Vypsání Bucket Policy na daném bucketu:
aws s3api get-bucket-policy --profile test_user --endpoint-url https://s3.cl2.du.cesnet.cz --bucket BUCKET-NAME
Odebrání Bucket Policy na daném bucketu:
aws s3api delete-bucket-policy --profile test_user --endpoint-url https://s3.cl2.du.cesnet.cz --bucket BUCKET-NAME
Nastavení Bucket Policy uložené v souboru:
s3cmd -c ~/.s3cfg_test_user setpolicy /home/user/bucket_policy.json s3://BUCKET-NAME
Vypsání Bucket Policy na daném bucketu
s3cmd -c ~/.s3cfg_test_user info s3://BUCKET-NAME
Odebrání Bucket Policy na daném bucketu:
s3cmd -c ~/.s3cfg_test_user delpolicy s3://BUCKET-NAME
Níže naleznete příklady 3 základních Bucket Policy. Jendá se o sdílení v rámci tentnatu pro read-only a read-write a nakonec pro veřejné sdílení (public).
"keys": [
{
"user": "354dasf3_db44_4dsa_a9b9_24ae65476$136aadsdas57d4asdrt5hzuuzc",
"access_key": "hash_access_key_hash",
"secret_key": "hash_secret_key_hash"
}
]
{
"Statement":[
{
"Sid":"* on bucket-tenant-ro policy",
"Effect":"Allow",
"Principal": {"AWS": ["TENANT_NAME"]},
"Action": ["s3:ListBucket","s3:GetObject"],
"Resource":[ "arn:aws:s3:::BUCKET-NAME", "arn:aws:s3:::BUCKET-NAME/*" ]
}
]
}
{
"Statement":[
{
"Sid":"* on bucket-tenant-rw policy",
"Effect":"Allow",
"Principal": {"AWS": ["TENANT_NAME"]},
"Action": ["s3:ListBucket","s3:GetObject","s3:PutObject","s3:DeleteObject"],
"Resource":[ "arn:aws:s3:::BUCKET-NAME", "arn:aws:s3:::BUCKET-NAME/*" ]
}
]
}
{
"Statement":[
{
"Sid":"RW for user on bucket policy",
"Effect":"Allow",
"Principal": {
"AWS": [
"arn:aws:iam::TENANT_NAME:user/BUCKET_OWNER",
"arn:aws:iam::TENANT_NAME:user/RW_USER"
]
},
"Action": ["s3:ListBucket","s3:GetObject","s3:PutObject","s3:DeleteObject"],
"Resource":[ "arn:aws:s3:::BUCKET-NAME", "arn:aws:s3:::BUCKET-NAME/*" ]
}
]
}
kde:
TENANT_NAME je třeba nahradit názvem tenantu;
BUCKET_OWNER je třeba nahradit jménem uživatele, který vlastní bucket, aby měl práva k objektům, které nahrají jiní oprávnění uživatelé;
RW_USER je třeba nahradit jménem uživatele (resp. servisní identity), pro kterého je sdílení konfigurováno;
BUCKET-NAME je třeba nahradit názvem bucketu.
{
"Statement":[
{
"Sid":"* on bucket-tenant-public policy",
"Effect":"Allow",
"Principal": "*",
"Action": ["s3:ListBucket","s3:GetObject"],
"Resource":[ "arn:aws:s3:::BUCKET-NAME", "arn:aws:s3:::BUCKET-NAME/*" ]
}
]
}
https://s3.cl2.du.cesnet.cz/354dasf3_db44_4dsa_a9b9_24ae65476:BUCKET-NAME/
{
"Id": "policy-240529-104335-5328",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "statement-240529-104335-2834",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::TENANT_NAME:user/BUCKET_OWNER",
"arn:aws:iam::TENANT_NAME:user/RW_USER"
]
},
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": [ "arn:aws:s3:::BUCKET-NAME", "arn:aws:s3:::BUCKET-NAME/*" ]
},
{
"Sid": "statement-240529-105600-2834",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::TENANT_NAME:user/RO_USER"
]
},
"Action": [
"s3:ListBucket",
"s3:GetObject"
],
"Resource": [ "arn:aws:s3:::BUCKET-NAME", "arn:aws:s3:::BUCKET-NAME/*" ]
}
]
}
kde:
TENANT_NAME je třeba nahradit názvem tenantu;
BUCKET_OWNER je třeba nahradit jménem uživatele, který vlastní bucket, aby měl práva k objektům, které nahrají jiní oprávnění uživatelé;
RW_USER je třeba nahradit jménem uživatele (resp. servisní identity), pro kterého je konfigurováno sdílení read-write;
RO_USER je třeba nahradit jménem uživatele (resp. servisní identity), pro kterého je konfigurováno sdílení read-only;
BUCKET-NAME je třeba nahradit názvem bucketu.
Příklad generování výšeuvedené Bucket Policy aws pluginem s3bucket-policy:
aws s3bucket-policy --endpoint-url https://s3.cl2.du.cesnet.cz/ new-policy --dryrun --bucket BUCKET-NAME --newpol-type share-w-user --newpol-spec tenant=TENANT_NAME,user=RW_USER,action=rw tenant=TENANT_NAME,user=RO_USER,action=ro