私の Amazon S3 バケットにはカスタムの AWS KMS キーを使用したデフォルト暗号化が設定されています。ユーザーがそのバケットでダウンロードやアップロードを行えるようにするにはどうすればいいですか?
Amazon Simple Storage Service (Amazon S3) バケットをセットアップして、カスタムの AWS Key Management Service (AWS KMS) キーを使用し、デフォルト暗号化を実行しています。AWS Identity and Access Management (IAM) ユーザーがバケットでダウンロードとアップロードを実行できるようにしたいと思います。どうすればそれができますか?
解決方法
IAM ユーザーと AWS KMS キーが同一の AWS アカウントに属している場合
1. AWS KMS コンソールを開き、ポリシービューを使用してキーのポリシードキュメントを表示します。少なくとも、kms:GenerateDataKey および kms:Decrypt アクションに対する IAM ユーザーアクセス許可を付与するようにキーのポリシーを変更します。次のようなステートメントを追加できます。
{
"Sid": "ExampleStmt",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:user/Jane"
},
"Resource": "*"
}
注: このポリシーの例には、個々の IAM ユーザーが暗号化された S3 バケットをダウンロードしてアップロードするために必要な最小限のアクセス許可のみが含まれます。ユースケースに基づいて、アクセス許可を変更または拡張できます。
2. IAM コンソールを開きます。バケットにアップロードおよびバケットからダウンロードするためのアクセス許可を付与するポリシーを IAM ユーザーに追加します。次のようなポリシーを使用できます。
注: Resource 値には、バケット内のオブジェクトを示すワイルドカード文字と共にバケットの Amazon リソースネーム (ARN) を入力します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ExampleStmt",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
}
]
}
重要: IAM ユーザーポリシーによって付与された S3 アクセス許可は、バケットポリシーの明示的な拒否ステートメントによってブロックされる場合があります。IAM ユーザーポリシーと競合する明示的な拒否ステートメントがないことを確認するために、バケットポリシーを確認してください。
IAM ユーザーが AWS KMS キーおよび S3 バケットと異なるアカウントに存在する場合
重要: お客様が管理する AWS KMS キーにはクロスアカウントアクセスを付与できますが、AWS が管理する AWS KMS キーには付与できません。AWS が管理する AWS KMS キーのキーポリシーは変更できません。
1. AWS KMS コンソールを開き、ポリシービューを使用してキーのポリシードキュメントを表示します。少なくとも、kms:GenerateDataKey および kms:Decrypt アクションに対する IAM ユーザーアクセス許可を付与するようにキーのポリシーを変更します。次のようなステートメントを追加できます。
{
"Sid": "ExampleStmt",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:user/Jane"
},
"Resource": "*"
}
注: このポリシーの例には、個々の IAM ユーザーが暗号化された S3 バケットをダウンロードしてアップロードするために必要な最小限のアクセス許可のみが含まれます。ユースケースに基づいて、アクセス許可を変更または拡張できます。
2. IAM ユーザーが属しているアカウントから IAM コンソールを開きます。バケットにアップロードおよびバケットからダウンロードするためのアクセス許可を付与するポリシーを IAM ユーザーに追加します。ポリシーは、バケットに関連付けられている AWS KMS キーでも機能する必要があります。
クロスアカウントのシナリオでは、IAM ユーザーがオブジェクトをアップロードできるように s3:PutObjectAcl 許可を付与することを検討してください。次に、バケットのアカウントにオブジェクトのフルコントロール (bucket-owner-full-control) を付与します。また、同期オペレーションや再帰的なコピーオペレーションの実行に必要な s3:ListBucket アクセス許可を付与することも検討してください。次のようなポリシーを使用できます。
注: 最初の Resource 値には、バケット内のオブジェクトを示すワイルドカード文字と共にバケットの ARN を入力します。2 番目の Resource 値には、バケットの ARN を入力します。3 番目の Resource 値には、AWS KMS キーの ARN を入力します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DownloadandUpload",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
},
{
"Sid": "ListBucket",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
},
{
"Sid": "KMSAccess",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Effect": "Allow",
"Resource": "arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"
}
]
}
3. S3 バケットを所有するアカウントから Amazon S3 コンソールを開きます。バケットポリシーを更新して、IAM ユーザーにバケットへのアクセス権を付与します。次のようなポリシーを使用できます。
注: Principal 値には、IAM ユーザーの ARN を入力します。最初の Resource 値には、バケット内のオブジェクトを示すワイルドカード文字と共にバケットの ARN を入力します。2 番目の Resource 値には、バケットの ARN を入力します。
{
"Id": "Policy1584399307003",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DownloadandUpload",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:user/Jane"
]
}
},
{
"Sid": "ListBucket",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:user/Jane"
]
}
}
]
}
関連情報
関連するコンテンツ
- 質問済み 6年前lg...
- 質問済み 5年前lg...
- 質問済み 1年前lg...
- AWS公式更新しました 3年前
- AWS公式更新しました 1年前