AWS Identity and Access Management (IAM) ポリシーとタグベースのアクセスコントロールを使用して、Amazon Simple Storage Service (Amazon S3) バケット内のオブジェクトへのアクセスを制限したいと考えています。
解決策
以下のポリシーは、object tags を使用して Amazon S3 バケットオブジェクトへのアクセスを制御する方法の例です。
注:
- 以下のサンプルポリシーでは、awexamplebucket をお客様の S3 バケット名に置き換えてください。また、CreationDate、Owner、security、および environment のタグキーを自分のタグキーに置き換えてください。
- CreateBucket API はタグをサポートしていません。
- PutBucketTagging API を使用して、作成したバケットにタグを追加します。
- Amazon S3 は、オブジェクトリソースに対してのみタグベースの認証をサポートします。
ID ベースのポリシーを使用して、特定のタグとキー値を持つオブジェクトのみをユーザーが読み取れるようにする
次の ID ベースのポリシーは、awsexamplebucket1 バケットとバケット内のすべてのオブジェクトに s3: GetObject 権限を付与します。このポリシーでは、s3: ExistingObjectTag 条件を使用して、security: public キーと値のペアを持つオブジェクトのみにアクセスを制限します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::awsexamplebucket1/*",
"Condition": {
"StringEquals": {
"s3:ExistingObjectTag/security": "public"
}
}
}
]
}
ID ベースのポリシーを使用して、ユーザーが追加できるオブジェクトタグキーを制限する
次の ID ベースのポリシーは、ユーザーが awsexamplebucket バケット内のオブジェクトに追加できるタグキーを制限します。ユーザーは Owner キーまたは CreationDate キーを持つタグのみを追加できます。ユーザーがオブジェクトに追加できるタグキーを制御すると、バケットのオブジェクトに一貫したタグ付けスキームが維持されます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:PutObjectTagging",
"Resource": "arn:aws:s3:::awsexamplebucket1/*",
"Condition": {
"ForAllValues:StringLike": {
"s3:RequestObjectTagKeys": [
"Owner",
"CreationDate"
]
}
}
}
]
}
バケットポリシーを使用して、ユーザーが特定のタグとキーを持つオブジェクトのみを読み取れるようにする
次のバケットポリシーでは、ユーザーはenvironment: production キー値ペアを持つオブジェクトのみを読み取ることができます。このポリシーでは、s3: ExistingObjectTag 条件キーを使用してキーと値のペアを指定します。
{
"Version": "2012-10-17",
"Statement": [
{
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:role/JohnDoe"
]
},
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": "arn:aws:s3:::awsexamplebucket/*",
"Condition": {
"StringEquals": {
"s3:ExistingObjectTag/environment": "production"
}
}
}
]
}
バケットポリシーを使用して、ユーザーがオブジェクトに追加できるオブジェクトタグキーを制限する
次のバケットポリシーは、ユーザーが awsexamplebucket バケット内のオブジェクトに追加できるタグキーを制限します。ユーザーは Owner キーまたは CreationDate キーを持つタグのみを追加できます。ユーザーがオブジェクトに追加できるタグキーを制御すると、バケットのオブジェクトに一貫したタグ付けスキームが維持されます。
{
"Version": "2012-10-17",
"Statement": [
{
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:role/JohnDoe"
]
},
"Effect": "Allow",
"Action": [
"s3:PutObjectTagging"
],
"Resource": [
"arn:aws:s3:::awsexamplebucket*"
],
"Condition": {
"ForAllValues:StringEquals": {
"s3:RequestObjectTagKeys": [
"Owner",
"CreationDate"
]
}
}
}
]
}