ユーザ用ツール

サイト用ツール


aws:s3:access

Amazon S3アクセス管理(バケットポリシー, AMIポリシー, ACL, パブリックアクセス設定)

アクセス許可の確認方法

S3バケット一覧のページから、アクセスの概要を確認できます。

アクセス 説明
オブジェクトは公開可能 パブリックアクセス設定を無効にしています。
バケットとオブジェクトは非公開 パブリックアクセス設定を有効にしています。
公開 パブリックアクセス設定を無効にしています。
ACLでバケット公開しています。


AWS S3の制御方法

  • バケットポリシー(バケット単位でアクセス制御)
  • IAMポリシー(ユーザーごとにアクセス制御)
  • ACL(主にオブジェクト単位で制御する時に利用)
  • パブリックアクセス設定(公開防止)

ACLよりもバケットポリシーの方が強くなります。
バケットポリシーで設定されていない場合は、ACLによって制御されています。


【重要】バケットポリシー(バケット単位でアクセス制御)

  • バケット毎に、アクセス権限を設定
    • 設定例:このバケットは、全ユーザにリードを許可
    • 設定例:Cloud Frontが読み取れるようにする

設定方法

  1. [アクセス権限] の [バケットポリシー]を選択
  2. 「バケットポリシーエディター」に記載します。

バケットポリシーの例

VPCエンドポイントからのみ許可。コンソールでも確認できるようにする

{
  "Id": "VPCe",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VPCe",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::<<S3-BUCKET-NAME>>",
        "arn:aws:s3:::<<S3-BUCKET-NAME>>/*"
      ],
      "NotAction": [
        "s3:ListBucket",
        "s3:ListAllMyBuckets"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:SourceVpce": [
            "<<MY-ENDPOINT-ID>>"
          ]
        }
      },
      "Principal": "*"
    }
  ]
}

特定のIPアドレスからの制限

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::my-bucket",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": [
                        "111.111.222.111/32",
                        "111.111.222.222/32"
                    ]
                }
            }
        }
    ]
}



54.240.143.0/24 の範囲の IP アドレスは許可して、54.240.143.188 からのアクセスは拒否

{
  "Version": "2012-10-17",
  "Id": "S3PolicyId1",
  "Statement": [
    {
      "Sid": "IPAllow",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::examplebucket/*",
      "Condition": {
         "IpAddress": {"aws:SourceIp": "54.240.143.0/24"},
         "NotIpAddress": {"aws:SourceIp": "54.240.143.188/32"} 
      } 
    } 
  ]
}


{
  "Version": "2012-10-17",
  "Id": "S3PolicyId1",
  "Statement": [
    {
      "Sid": "IPAllow",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::examplebucket/*",
      "Condition": {
         "IpAddress": {"aws:SourceIp": [
                        "54.240.143.0/24",
                        "192.1680.143.0/24"
                        ]
                      },
         "NotIpAddress": {"aws:SourceIp": [
                          "54.240.143.188/32",
                        "192.1680.143.10/24"
                        ]
                      } 
      } 
    } 
  ]
}


【重要】IAMポリシー(ユーザーごとにアクセス制御)

  • IAMユーザに対して、S3やバケットへのアクセス権限を設定
    • 設定例:Aユーザは、バケットAに対して、全ての操作を許可

IAMの詳細は、AWS IAMで、ユーザ管理

設定例

特定のバケットのみアクセスを許可するIAMポリシー
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::testbucket",
                "arn:aws:s3:::testbucket/*"
            ]
        }
    ]
}
{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action": "s3:ListAllMyBuckets",
         "Resource":"arn:aws:s3:::*"
      },
      {
         "Effect":"Allow",
         "Action":["s3:ListBucket","s3:GetBucketLocation"],
         "Resource":"arn:aws:s3:::awsexamplebucket1"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject",
            "s3:PutObjectAcl",
            "s3:GetObject",
            "s3:GetObjectAcl",
            "s3:DeleteObject"
         ],
         "Resource":"arn:aws:s3:::awsexamplebucket1/*"
      }
   ]
}


ACL(主にオブジェクト単位で制御する時に利用)

ACL無効化が推奨。
バケットへのアクセス制御を ポリシー(IAMユーザーポリシーやバケットポリシー)に 絞ることができます。

  • 各バケットおよびオブジェクトのアクセス権限を指定(バケットACLとオブジェクトACL)
  • ACLよりも、ユーザポリシーやバケットポリシーが優先される。
  • ACLは、バケットやオブジェクトに対して、100個まで指定可能

バケット単位のACLの設定に関係なくオブジェクト単位のACLが優先されます。

設定方法

  1. [アクセス権限] の [アクセスコントロールリスト]を選択
  2. AWSアカウントをの行をクリックすると、[アクセスコントロールリスト]の設定ができます。
    オブジェクトへのアクセス
      ON/OFF オブジェクトの一覧
      ON/OFF オブジェクトの書き込み
    
    このバケットの ACL へのアクセス
      ON/OFF バケットのアクセス権限の読み取り
      ON/OFF バケットのアクセス権限の書き込み
    


【理解難】パブリックアクセス設定(公開防止)

パブリックからのアクセスを拒否したい場合に設定します。
以下の4つをON/OFFにできます。

全部有効にした場合

パブリックアクセスをすべてブロックすることになります。
オブジェクトにアクセスできるのは、AWS サービスとバケット所有者のアカウント内の承認されたユーザーのみに制限されます。

新しいアクセスコントロールリスト (ACL) を介して許可されたバケットとオブジェクトへのパブリックアクセスをブロックする

ACLの新規作成、設定変更でパブリックアクセス可能な設定にしない

任意のアクセスコントロールリスト (ACL) を介して許可されたバケットとオブジェクトへのパブリックアクセスをブロックする

ACLで、パブリックアクセスをすべてブロックする

新しいパブリックバケットポリシーを介して許可されたバケットとオブジェクトへのパブリックアクセスをブロックする

バケットポリシーの新規作成、設定変更でパブリックアクセス可能な設定にしない

任意のパブリックバケットポリシーを介して、バケットとオブジェクトへのパブリックアクセスとクロスアカウントアクセスをブロックする

パブリックバケットポリシーで、パブリックアクセスをすべてブロックする



参考:S3のブロックパブリックアクセス設定について分かりやすく説明する - 非凡な才能をください。


参考

aws/s3/access.txt · 最終更新: 2022/08/09 23:44 by kurihara

ページ用ツール