[解決済み] アクセスポイントを経由してAmazon S3へのロールを認可する
質問
目標は、Amazon S3のリードライト(リスト、ゲット、プット、デリート)アクセスを単一のロールに制限し、バケットポリシーをアクセスポイントのみにロックして、アクセスポイントを通じてのみS3にアクセスすることである。
これまでに行った設定は
- S3の部分的なアクセス制御(list, get, put, delete)をアクセスポイントに委譲する。
- アクセスポイントレベルで明示的な拒否を適用し、1つのロールにのみアクセスを制限する。
- そのロールに、アクセスポイント経由でのリストアップ、取得、配置、削除を許可するポリシーを追加しました。
しかし、経験
AccessDenied
上記のいずれかの操作で
S3 Bucketのポリシーはこちらです。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AuthorizeS3ObjectsReadModifyThroughAccessPointsOnly",
"Effect": "Deny",
"Principal": "*",
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::XXX-YYY-ZZZ/*",
"Condition": {
"ForAllValues:StringNotEquals": {
"s3:DataAccessPointArn": "arn:aws:s3:us-east-1:XXX-YYY-ZZZ:accesspoint/XXX-YYY-ZZZ"
}
}
},
{
"Sid": "AuthorizeS3ObjectsListThroughAccessPointsOnly",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::XXX-YYY-ZZZ",
"Condition": {
"ForAllValues:StringNotEquals": {
"s3:DataAccessPointArn": "arn:aws:s3:us-east-1:XXX-YYY-ZZZ:accesspoint/XXX-YYY-ZZZ"
}
}
}
]
}
で、こちらがアクセスポイントのポリシーです。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AuthorizeReadModifyS3ObjectsThroughSpecificRoleOnly",
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:us-east-1:XXX-YYY-ZZZ:accesspoint/XXX-YYY-ZZZ/object/*",
"Condition": {
"ForAllValues:StringNotEquals": {
"aws:PrincipalArn": "arn:aws:iam::XXX-YYY-ZZZ:role/XXX-YYY-ZZZ"
}
}
},
{
"Sid": "AuthorizeListS3ObjectsThroughSpecificRoleOnly",
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:us-east-1:XXX-YYY-ZZZ:accesspoint/XXX-YYY-ZZZ",
"Condition": {
"ForAllValues:StringNotEquals": {
"aws:PrincipalArn": "arn:aws:iam::XXX-YYY-ZZZ:role/XXX-YYY-ZZZ"
}
}
}
]
}
で、これがロールポリシーです。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ReadModifyS3Objects",
"Effect": "Allow",
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:us-east-1:XXX-YYY-ZZZ:accesspoint/XXX-YYY-ZZZ/object/*",
]
},
{
"Sid": "ListS3Objects",
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:us-east-1:XXX-YYY-ZZZ:accesspoint/XXX-YYY-ZZZ"
]
}
]
}
これは動作しません。
AccessDenied
. 適切なロールを想定し、例えば次のようなコマンドでテストしています。
aws s3 ls "s3://arn:aws:s3:us-east-1:XXX-YYY-ZZZ:accesspoint/XXX-YYY-ZZZ/"
不思議なのは、ロールポリシーリソースをS3バケットARNで拡張した場合(例えば
arn:aws:s3:::XXX-YYY-ZZZ/*
と
arn:aws:s3:::XXX-YYY-ZZZ
)なので、アクセスとs3バケットリソースの両方が存在します。
であれば、アクセスは許可されます。
. そして、もし
accesspoint
リソースは
AccessDenied
が再び表示されます。ドキュメントや解決策、アドバイスがあれば、とてもありがたいです。
解決方法は?
どのポリシーも、実際にはS3での操作を許可していません。 . 拒否しかありません。ですから当然、あなたのロールにはS3へアクセスする権限がありません。以下より ドキュメント :
アクセスポイント・ポリシーで付与されたパーミッションは、基盤となるバケツが同じアクセスを許可している場合にのみ有効です。
つまり
Allow
をアクセスポイントリソースの役割にすることは
十分ではない
.
不思議なのは、ロールポリシーリソースをS3バケットで拡張した場合
S3アクセスポイントにアクセスするための権限は 代わり映えしない は、実際にS3にアクセスする権限を持っていることを意味します。したがって、あなたの役割は、S3アクセスポイントおよび実際のS3バケットとオブジェクト自体に対する権限の両方を必要とします。
関連
-
[解決済み】あなたのWSGIPathは、存在しないファイルを参照しています。
-
[解決済み】AWS DynamoDBとAWS DocumentDBの違い(新規サービス)?[解決済み】AWS DynamoDBとAWS DocumentDBの違いについて]
-
[解決済み] Amazon S3のファイルやフォルダの名前を変更する方法は?
-
[解決済み] LATERAL VIEW EXPLODE in presto(ラテラルビュー エクスプロード イン プレスト
-
[解決済み] Cognitoのサインアップ時に電話番号の書式が無効である
-
[解決済み] EIP:AddressLimitExceeded
-
[解決済み] SNS/SMSのログはどこにありますか?クラウドウォッチ空
-
[解決済み] プライマリネームサーバが親に登録されていない
-
[解決済み] DynamoDBのBatchGetItemとQueryの違いとは?
-
[解決済み] Amazon SNSとAmazon SQSの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] RDS コンソールで Aurora の読み取りレプリカを作成するオプションが表示されない
-
[解決済み] DynamoDBでカラムを追加する方法
-
[解決済み] コード NoSuchBucket
-
[解決済み] DNS名foo.を持つRRSetはゾーンバーで許可されていません。
-
[解決済み] RDS は、以下の組み合わせでの DB インスタンスの作成をサポートしていません。
-
[解決済み] SQSとRabbitMQの比較
-
[解決済み] AWSです。CloudFormationのテンプレートでbooleanパラメータを指定する方法
-
[解決済み] AWSのstsは、1つのコマンドの役割を担う
-
[解決済み] AWS - Disconnected : サポートされている認証方法がありません (サーバーは :publickey を送信)
-
[解決済み] AWS EFS vs EBS vs S3(違い&いつ使う?)【終了しました。