CloudFormationを使ってKMS暗号キーを使用したS3を作成する【AWS】

S3アイキャッチ

・CloudFormationを使ってKMS暗号化キーを使用したS3を作成したい。
・KMSを使用して暗号化したい。
・CloudShellを使ってS3の暗号化確認を行いたい。

KMSの作成

KMSのダッシュボードに移動し「キーの作成」をクリック

KMS設定画面

下記画像のように設定を入れててください。詳細オプションはデフォルトのままで大丈夫です。

KMSのキーを設定

ラベルを追加でエイリアスを任意で入力してください。タグはなくても大丈夫です。

ラベルを追加画面

「キー管理アクセス許可を定義」では「AdministratorAccess」ポリシーをアタッチしたユーザーを指定します。それ以外はデフォルトで大丈夫です。

キーの管理アクセス許可を定義

アクセス許可も同様です。

キー使用方アクセス許可を定義

キーポリシーは下記のように設定し「完了」をクリック。

ステップ4のキー設定

キーポリシーは以下のように設定されます(自動)。

{
    "Id": "key-consolepolicy-3",
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Enable IAM User Permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::YOUR_ACCOUNT_ID:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        }
    ]
}

今回はこの鍵を使用して、S3を作っていきます。

カスタマー管理型のキー

S3をCloudFormationを使って作成する

下記リンク先資料を参考に作成しました。

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html

“KMS-KEY-ARN”にはKMSダッシュボード→カスタマー管理型のキー→キーIDをクリックすればARNが確認できます。

{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "S3 bucket with default encryption using SSE-KMS with an S3 Bucket Key",
    "Resources": {
        "EncryptedS3Bucket": {
            "Type": "AWS::S3::Bucket",
            "Properties": {
                "BucketName": {
                    "Fn::Sub": "encryptedbucket-${AWS::Region}-${AWS::AccountId}"
                },
                "BucketEncryption": {
                    "ServerSideEncryptionConfiguration": [
                        {
                            "ServerSideEncryptionByDefault": {
                                "SSEAlgorithm": "aws:kms",
                                "KMSMasterKeyID": "KMS-KEY-ARN"
                            },
                            "BucketKeyEnabled": true
                        }
                    ]
                }
            },
            "DeletionPolicy": "Delete"
        }
    }
}

※KMSのARNは下記画面から確認できます。

KMSのARN

CloudFormationの取り込み

次にCloudFormationの取り込みを行なっていきます。

CloudFormationのダッシュボードに移動し「スタックの作成」をクリック

CloudFormationの取り込み画面

テンプレートの指定より「テンプレートファイルのアップロード」を選択し、先ほど作成したCloudFormationをアップロードし「次へ」をクリックします。

スタックの作成画面

スタック名を任意で入力。パラメータ属性は今回は指定していないのでないです。

スタックの詳細

タグだけ入力しましたが、必要ない方は空白で問題ないです。

スタックオプションの設定

レビューが表示されますが、問題なさそうであれば「送信」をクリックしてください。

スタックが「CREATE_COMLATE」となればOKです。S3を見てみましょう。

CloudFormation完成画面

S3のバケット一覧を見てみましょう。

先ほど作成した「encryptedbucket-ap-northeast-1-YOUR _ACCOUNT_ID」のバケットができていますね。

S3作成確認画面

確認

確認してみましょう。今回はCloudShellを用いて確認します。

まずは、下記コマンドを実行して、S3のバケット一覧を取得します。

aws s3api list-buckets

バケット名を取得したら、今回作成したバケット名に変えて、下記コマンドを実行

aws s3api get-bucket-encryption --bucket YOUR_CREATE_BUCKET_NAME

SSEAlgorithmの欄でaws:kmsという記載が確認できました。

以上です。誰かの参考になれば幸いです。