この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは!コンサル部のinomaso(@inomasosan)です。
S3のバケットポリシーを調べていた際に以下のAWSナレッジを見つけました。
今回は、実際にS3のバケットポリシーを設定して、HTTPSリクエストのみを許可できるかAWS CLIで確認していきます。
まずは結論
HTTPS(HTTP over SSL/TLS)を強制するためには、S3バケット毎のバケットポリシーを設定する必要があります。
また、上記設定が有効化されている確認も必要となるので、中々に運用が大変です。
デフォルトだと、ほとんどのリクエストはHTTPSが使用されます。
そのため、個人情報等の重要な情報が保管されているバケットに対してのみ、設定するのが良いかと思います。
環境
今回実行した環境は以下の通りです。
- macOS Big Sur 11.6
- AWS CLI 2.2.35
前提
S3へのリクエストの仕様は、AWSナレッジに記載されていました。
Amazon S3 は HTTP リクエストと HTTPS リクエストの両方を許可します。デフォルトでは、リクエストは AWS マネジメントコンソール、AWS コマンドラインインターフェイス (AWS CLI)、または HTTPS を介して行われます。
やってみた
検証用S3バケット作成
S3バケットをデフォルト設定で作成し、バケットポリシーにHTTPリクエストを明示的に拒否するポリシーを設定します。
{
"Id": "ExamplePolicy",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowSSLRequestsOnly",
"Action": "s3:*",
"Effect": "Deny",
"Resource": [
"arn:aws:s3:::<バケット名>",
"arn:aws:s3:::<バケット名>/*"
],
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
},
"Principal": "*"
}
]
}
テストファイル準備
S3バケットに検証用のファイルを用意します。
今回はAWS CLIで検証するので、S3バケットへの検証用のファイルアップロードもコマンドで実施していきます。
以下のコマンドで、ローカル端末に検証用のファイルを作成し、S3バケットにアップロードします。
※デフォルトはHTTPSリクエストなので、以下のコマンド実行は特に問題ありません。
% touch test.txt
% aws s3 cp test.txt s3://<バケット名>/
upload: ./test.txt to s3://<バケット名>/test.txt
%
% aws s3 ls s3://<バケット名>/
2021-10-20 14:17:56 0 test.txt
HTTPSリクエスト確認
明示的なHTTPSリクエスト確認をする場合は、--endpoint-url
オプションで、コマンドのデフォルトエンドポイントURLを上書きします。
今回は東京リージョンにS3を作成したのでhttps://s3.ap-northeast-1.amazonaws.com
と指定しています。
以下のコマンドで、先ほどアップロードしたファイルを問題なく参照できました。
aws s3 ls s3://<バケット名>/ --endpoint-url https://s3.ap-northeast-1.amazonaws.com
2021-10-20 14:17:56 0 test.txt
HTTPリクエスト確認
HTTPSリクエストと同様に--endpoint-url
オプションで、コマンドのデフォルトエンドポイントURLを上書きします。
HTTPでリクストするためhttp://s3.ap-northeast-1.amazonaws.com
と指定しています。
以下のコマンドで、HTTPリクエストの場合Access Denied
されることがわかりました。
% aws s3 ls s3://<バケット名>/ --endpoint-url http://s3.ap-northeast-1.amazonaws.com
An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied
TLSのバージョンで細かい制御できないの?
いい感じのブログがあったので、こちらをご参照ください。
参考URL
まとめ
今回の検証にあたり梶原裕に色々とアドバイスを貰いました。改めてありがとうございます。
この記事が、どなたかのお役に立てば幸いです。それでは!