web-dev-qa-db-ja.com

Amazon S3でSSLを強制する

(IAM、バケットポリシーなどを介して)Amazon S3にonly HTTPS/SSL経由でコンテンツを提供し、すべての通常の暗号化されていないHTTPアクセスを拒否することは可能ですか?

29
Alex

これはバケットポリシーを使用して実現できると思います。条件aws:SecureTransport: falseを使用して、問題のバケットへのすべてのHTTPリクエストを拒否します。
以下はテストされていませんが、ケースに合わせて設定する方法のアイデアを提供するはずです。

{
    "Statement":[
        {
            "Action": "s3:*",
            "Effect":"Deny",
            "Principal": "*",
            "Resource":"arn:aws:s3:::bucketname/*",
            "Condition":{
                "Bool":
                { "aws:SecureTransport": false }
            }
        }
    ]
} 
33
OkezieE

ここでは、着信トラフィックを許可しますが、非SSLトラフィックを拒否します。戻る場合は、2を削除してくださいnd ステートメント:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::yourbucketnamehere/*"
        },
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Deny",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::yourbucketnamehere/*",
            "Condition":{
                "Bool":
                { "aws:SecureTransport": false }
            }
        }
    ]
}

バケット名をyourbucketnamehereに置くことを忘れないでください。

次に、SSL証明書をインストールする必要があります。 すべての情報はここにあります

5