AWS S3 での匿名ダウンロードを拒否する

AWS S3 での匿名ダウンロードを拒否する

パブリックにダウンロード可能なファイルがいくつかあるバケットがあります。これらのファイルは IAM ユーザーのみがダウンロードできるようにするバケット ポリシーを設定したいと考えています。これまでに取得したポリシーは次のとおりです。

{
    "Version": "2008-10-17",
    "Id": "Policy1424952346041",
    "Statement": [
        {
            "Sid": "Stmt1424958477350",
            "Effect": "Deny",
            "NotPrincipal": {
                "AWS": "arn:aws:iam::777777777777:root"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::test/*"
        },
        {
            "Sid": "Stmt1424958477351",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::777777777777:root"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::test/*"
        }
    ]
}

しかし、IAM ユーザーを含む全員が拒否されています。何が間違っているのか、どなたかご指摘いただけますか?

答え1

アカウント内の IAM ユーザーの数に応じて、次のように両方のステートメントでアカウントを指定できます (テストとして 1 つまたは 2 つ試して、機能するかどうかを確認してください)。以前、arn:aws:iam::XXXXXXXXXXXX:root ですべての IAM アカウントを実際にカバーすることができないという問題が発生しました。IAM ユーザーのみを指定して、ルート エントリを削除することもできます。

{
    "Version": "2008-10-17",
    "Id": "Policy1424952346041",
    "Statement": [
        {
            "Sid": "Stmt1424958477350",
            "Effect": "Deny",
            "NotPrincipal": {
                "AWS": [
                        "arn:aws:iam::777777777777:root",
                        "arn:aws:iam::777777777777:user/user1", 
                        "arn:aws:iam::777777777777:user/user2" ]
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::test/*"
        },
        {
            "Sid": "Stmt1424958477351",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                        "arn:aws:iam::777777777777:root",
                        "arn:aws:iam::777777777777:user/user1",
                        "arn:aws:iam::777777777777:user/user2" ]
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::test/*"
        }
    ]
}

関連情報