[アップデート] IAM Access Analyzer の評価対象に S3アクセスポイント が追加されました

2020.05.08

ちゃだいん(@chazuke4649)です。

IAM Access Analyzer の評価対象に S3アクセスポイント が追加されました!

公式リリース情報)S3 アクセスポイントを介して共有された S3 バケットへの意図しないアクセスを検出、確認、修正する

これによって、IAM Access Analayzer で S3の全てのアクセスポリシー(バケットポリシー、ACL、アクセスポイントポリシー)をチェックできるようになりました!

早速チェックしてみたいと思います!

やってみた

1. 検出対象のバケットとアクセスポイントを作成する

今回は、パブリックアクセスを許可するアクセスポリシーが検出されるかどうか、を試してみたいと思います。

まずは、test-chadain-20200508という名前のバケットを作成します。
アクセスポイントポリシーを設定する際の推奨事項に従って、バケットポリシーに「アクセスポイント経由のアクセスのみ許可する」という内容のポリシーを記述します。下記の1.(太字)の方です。

アクセスポイントポリシーの例
以下の例は、アクセスポイントを介したリクエストを制御するための IAM ポリシーの作成方法を示しています。

注記 アクセスポイントポリシーで付与されるアクセス許可は、基になるバケットでも同じアクセスが許可される場合にのみ有効です。このためには以下の 2 つの方法があります。

1.(推奨) 「アクセスポイントへのアクセスコントロールの委任」の説明に従って、バケットからアクセスポイントにアクセスコントロールを委任します。

2.アクセスポイントポリシーに含まれているものと同じアクセス許可を、基になるバケットのポリシーに追加します。最初のアクセスポイントポリシーの例は、必要なアクセスを許可するように基になるバケットポリシーを変更する方法を示しています。

引用元)アクセスポイントの作成 - Amazon Simple Storage Service

上記ドキュメントにあったサンプルを下記のように使用します。

{
    "Version": "2012-10-17",
    "Statement" : [
    {
        "Effect": "Allow",
        "Principal" : { "AWS": "*" },
        "Action" : "*",
        "Resource" : [ "arn:aws:s3:::test-chadain-20200508", "arn:aws:s3:::test-chadain-20200508/*"],
        "Condition": {
            "StringEquals" : { "s3:DataAccessPointAccount" : "123456789012" }
        }
    }]
}

※AWSアカウントはダミー

次に、アクセスポイントを作成します。
下図の通り、アクセスタイプはインターネット、ブロックパブリックアクセスは無効にします。

アクセスポイントポリシーは、先ほどのドキュメントにあるサンプルを修正し使用します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:ap-northeast-1:123456789012:accesspoint/test-chadain-20200508-ap/object/*"
        }
    ]
}

これでパブリックなアクセスポリシーを持つアクセスポイントができました。

2. アクセスアナライザーをチェックする

早速チェックしてみます。

IAMコンソールにて、アクセスアナライザーを開きました。

すると、対象のバケットが検出されていました。

「次を介して共有」の項目に「アクセスポイント」が追加されているようです。

詳細は以下の通りです。

また、S3コンソール側(Access Analyzer for S3)からも確認できました。

※ちなみに、実際は先にS3コンソール側から確認をした際は、最初は表示されませんでした。そしてIAMコンソール側から確認でき、再度S3コンソール側をみてみると表示されてました。

終わりに

これでS3のパブリックアクセス検知は、全面的にアクセスアナライザーに任せられる状態になりました。やったね!

それではこの辺で。ちゃだいん(@chazuke4649)がお送りしました。