Open1

S3バケットポリシーでエラーになる

yuya8696yuya8696

S3バケットを特定のIPアドレスからのアクセスのみ許可して、あとはブロックしたいとき、こんな感じでS3バケットポリシーを設定する

{
    "Version": "2012-10-17",
    "Id": "hogeid",
    "Statement": [
        {
            "Sid": "hogesid",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::hoge-backet",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": [
                        "xxx.xxx.xxx.xxx/xx",
                        "xxx.xxx.xxx.xxx/xx",
                        "xxx.xxx.xxx.xxx/xx",
                        "xxx.xxx.xxx.xxx/xx"
                    ]
                }
            }
        },
        {
            "Sid": "hogesid",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::hoge-backet/*"
        }
    ]
}

このとおりポリシーを設定しようとしたら、「バケットポリシーを編集するアクセス許可がありません」というエラーが出てしまった。

ルートユーザーでポリシー設定を試みたが同じエラーでできず。

調べた結果、「パブリックアクセスをすべて ブロック」が「オン」になっていたのが悪かった模様。
一時的に

  • 新しいパブリックバケットポリシーまたはアクセスポイントポリシーを介して付与されたバケットとオブジェクトへのパブリックアクセスをブロックする
  • 任意のパブリックバケットポリシーまたはアクセスポイントポリシーを介したバケットとオブジェクトへのパブリックアクセスとクロスアカウントアクセスをブロックする

のチェックを外してポリシーを設定したら正常に設定できた。

"Principal": "*" だとパブリックパケットポリシーと分類されてポリシー設定ができなかったのか?と予想するが確かなことはわからない。

とりあえず設定できたら再度「パブリックアクセスをすべて ブロック」を「オン」に戻して一件落着