バケット、オブジェクトのアクセス権限をJSONで定義できます。
「S3のマネジメントコンソール > アクセス権限 > バケットポリシー」で設定できます。
- ポリシーを定義できるのはバケット所有者のみです
- バケット/オブジェクトレベルのアクセス権を設定できます
- オブジェクトのアクセス権設定は、バケットとオブジェクトの所有者が一致する場合のみ可能です
- バケットポリシーのサイズは20KBまで
🚜 ポリシー要素の意味
要素 | 意味 |
---|---|
Version |
バージョン情報です。”Version”:”2012-10-17”でポリシー変数を使うことができます |
Principal |
AWSアカウントID、IAMユーザーのARNなどを指定できます |
Effect |
この条件を許可するならAllow 、拒否するならDeny を指定します |
Action |
許可するアクションの設定。s3:GetObject は読み込み権限 |
"Resource": "arn:aws:s3:::xxx" |
取り扱うオブジェクトのARN。arn:aws:s3:::xxx でS3のバケットを示します |
Condition |
オプショナルな要素。ポリシーの実行条件を細かく指定できます。詳細はこちら |
Principal
の設定例:
// AWSアカウント単位 |
😎 ポリシー変数
ポリシー変数とは、リクエスト時に受け取ることができる変数のことです。Resource
要素とCondition
要素で使うことができます。
// Resource要素 |
以下はポリシー変数の紹介です。
ポリシー変数 | 説明 |
---|---|
aws:SecureTransport |
リクエストがSSLを使用して送信されたかどうかを示すBool値 |
aws:SourceIp |
リクエスト元のIPアドレス |
aws:UserAgent |
クライアントアプリケーションに関する情報 |
aws:FederatedUser |
どのプロパイダでログインしたかを示す。www.amazon.com など |
😸 誰でもオブジェクトを閲覧できるようにする
バケットをWebサイトとして設定するなど、誰でもオブジェクトを読めるようにする設定は次のとおりです。
{ |
🍄 特定のIPからだけ閲覧できるようにする
特定のIPからだけアクセスを行えるようにして、それ以外はブロックする設定です。
{ |
🏀 特定のWebページから発生するGETリクエストだけ受け入れる
特定のWebページから発生するGETリクエストだけ受け入れて、画像や動画のリンクを表示する設定です。
{ |
🐝 補足:Amazonリソースネーム(ARN)
AWSサービスのリソースを指定するためのフォーマットです。
arn:partition:service:region:account:resource |
各パラメータの意味は次のとおりです。
パラメータ | 意味 |
---|---|
partition |
標準のAWSリージョンはaws 、中国リージョンならaws-cn です |
service |
AWS製品を示しています。IAMリソースの場合はiam です |
region |
リソースが置かれている領域です。IAMやS3では空白です |
account |
ハイフンのないのAWSアカウントIDです。IAMやS3では空白です |
resource |
特定のリソースを名前で識別する部分です |
🍮 参考リンク
- バケットポリシーの例 - Amazon Simple Storage Service
- S3のアクセスコントロールまとめ - Qiita
- Amazon S3バケットに読み取り専用のポリシーをつけたAWS IAMポリシーをサクッと作る方法