S3へのアクセスは、HTTPSのみを許可しよう
S3へアクセスし、データをアップロード/ダウンロードしたりすることをよくあることだと思います。
今回は、バケットポリシーの設定にて、HTTPSアクセスのみを許可し、HTTPでのアクセスは拒否する設定について紹介します。
通信を暗号化して、情報の盗聴・漏洩から防止しましょう。
S3のバケットポリシー:HTTPSアクセス(HTTPを拒否)のみを許可する設定
"Statement": [
{
"Sid": "S3BucketHTTPSOnlyPolicy",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::S3のバケット名/*",
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
}
}
]
Json形式について
S3のバケットの設定にて、以下のJSON形式の記述を行います。
Statementというのは、定義するという宣言です。
sidは、識別子です。
Effectは、以下の定義であれば許可(Allow)/拒否(Deny)の設定になります。
今回の場合は、HTTPSでなければ、拒否しますと宣言しています。
Principalは、リソースへのアクセス権限を有するものを設定します。
例:IAMユーザ、IAMロール、AWSサービス 等
今回の場合は、*となっているので、全ての権限に対してになります。
Actionは、リソースへどんなアクセスをするかを記載します。
今回の場合は、s3:*となっているので、S3への全てのアクセスに対してです。
Resourceは、どのリソースに対してアクセスするかを記載します。
今回の場合は、s3のバケット名/*としているので、s3のバケット内の全てリソースに対してのアクセスになります。
『S3のバケット名』の箇所に、『test』という名のバケット名であれば以下のように記述します。
『arn:aws:s3:::test/*』
conditionは、アクセスの条件になります。
Boolというのは、true(真) か false(偽)の値を確かめるという意味です。
今回の場合は、SecureTranspportなので、HTTPSアクセスであるかをチェックし、false(セキュアでない=HTTPSではない)であれば、EffectをDenyにしているので、拒否するということになります。
設定全体の意味としては以下の通りになります。
『HTTPSでなければ、「S3のバケット名」の全てのリソースに対して、全てのアクション、全ての権限に関する通信を拒否する!!!』
となります。
「HTTPSアクセスのみなら、どんなアクセスでも許可するよ!」ってことになりますので、IPアドレス等も指定すれば、より制限したアクセスになりますので、是非設定して試してみてください。
まとめ
・S3のバケットポリシーを設定することで、HTTPSアクセスのみを許可する設定が可能
・バケットポリシーはJSON形式での記述が必要
コメント