この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
現状ほとんどの場合はHTTPSを利用してS3バケットをアクセスしています。ただし、セキュリティの考慮で強制的にS3バケットに対してHTTPSのみ許可する要望があると思うので、今回はS3バケットへのアクセスはHTTPSのみに限定する方法をご照会します。
設定方法
デフォルトでは、S3バケットに対するリクエストはHTTPとHTTPS両方許可しています。HTTPSのみに限定するには、S3バケットにポリシーにHTTPS以外のリクエストを明示的に拒否するポリシーを設定することで実現できます。ポリシーの設定イメージは以下となります。
{
"Id": "ExamplePolicy",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowSSLRequestsOnly",
"Action": "s3:*",
"Effect": "Deny",
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
],
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
},
"Principal": "*"
}
]
}
検証してみる
S3バケットを作成し、上記のバケットポリシーを設定します。
aws cliを利用してテストファイルをS3バケットにアップロードします。
aws cliはデフォルトでHTTPSを利用しているので、HTTPSを利用して正常にアクセスできました。S3バケットにアップロードしたファイルは以下です。
aws cliはデフォルトでHTTPSを利用していることで、HTTPプロトコルを利用したい場合、エンドポイントURLにHTTPを使用すると明示的に指定する必要があります。
HTTPを利用すると、アクセス拒否されたというエラーが発生しました。
纏め
設定は簡単ですが、すごく有用な設定だと思います。クラウドを利用する場合、より安全なサービスを提供するため、セキュリティ面もちゃんと設計しないといけないと思います。皆さんのセキュリティ設計に少しお役に立てば幸いです。