雑草SEの備忘録

東大を卒業し、SEとして働くことになった。備忘録的に作業を綴る。

S3のbucketにアクセス制限しつつ、cloudfrontで公開する

最初に

S3にhtmlなどの資産をおき、CloudFrontで公開するという方法は一般的によく行われる方法。検索するとS3を公開する設定もよく見かけるが、S3を一般に公開せずに行う方がセキュリティ的に安心なので、Origin Access Identity(OAI)用いて設定する方法を自分の備忘録として、紹介する。 OAIについては、以下も参照ください。 docs.aws.amazon.com

AWSコンソール上での作業

  1. CloudFrontのDistributionsの作成 Create Distribution→Get Startedの順にクリック f:id:smartenergy:20210317112024p:plain

  2. Origin Domain Nameを選択 S3のバケットが一覧となり、選択できる。 f:id:smartenergy:20210317112118p:plain 右下のCreate Distributionをクリック f:id:smartenergy:20210317112755p:plain

  3. Origin Access Identity(OAI)をCloudFrontのDistirbutionに紐づける Origin Domain Name and Pathの左側のチェックボックを選択し、Editをクリック f:id:smartenergy:20210317112925p:plain

    • Origin Access Identity(OAI)を新規に作る場合 Create a new Identityをクリックし、Commentはデフォルトのものでも構わないし、自分がわかりやすい名前を設定しても良い。
    • すでにあるOrigin Access Identity(OAI)に紐づける場合 Use an Existing Identity をクリックし、Your Identitiesを選択。 f:id:smartenergy:20210317113046p:plain
  4. ブロックパブリックアクセスとバケットポリシーの修正

  5. S3のブロックパブリックアクセスとバケットポリシーを修正する。バケットポリシーは、以下のように設定する。Origin Access Identityは、Origin Access Identity で確認する。 f:id:smartenergy:20210317114841p:plain
{
    "Version": "2012-10-17",
    "Id": "Policy999999999999",
    "Statement": [
        {
          "xxx": "xxxx"
        },
        {
            "Sid": "2",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity ABCDEFG1234567"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::your-bucket-name/*"
        }
    ]
}