AWS:セキュアな設定(S3のHTTPSアクセス(HTTP拒否))

AWS
スポンサーリンク

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形式での記述が必要

コメント

タイトルとURLをコピーしました