CodeCommitがカスタマーマネージドキー(CMK)での暗号化をサポートしました

2023.12.22

こんにちは、岩城です。

本日、表題のアップデートがありましたので紹介します。

忙しい人向けまとめ

  • CodeCommitはプライベートGitリポジトリをホストするソースコードのバージョン管理サービス
  • リポジトリの暗号化にKMSキーが利用され、これまではAWSマネージドキーのみサポートされていた
  • 今回のアップデートによりユーザーが作成するカスタマーマネージドキー(CMK)のサポートが追加となった
  • マルチリージョンキーでの暗号化もサポートされている
  • 既存リポジトリを後からCMKの暗号化設定に変更できる

やってみた

まずはCMKです。マルチリージョンキーを利用できるか試したいので、単一リージョンキーとマルチリージョンキーの2つを作成しました。

image

つぎに、CodeCommitで新しくリポジトリを作成します。

追加設定のAWS KMS keyのメニューにCustomer managee keyが追加されています。

事前に作成しておいた単一リージョンキーを指定して作成します。

CMKを利用したからといって、リポジトリへの操作方法が何か変わるということはありません。

もし、権限を絞っているIAMを利用している場合は、公式ドキュメントに記載のあるCMKへのアクセス権を付与してください。

では、動作確認です。検証用に起動したCloud9から操作してみました。

$ git config --global user.name "Takuro Iwaki"                                          
$ git config --global user.email iwaki.takuro@classmethod.jp
$ git config --global credential.helper '!aws codecommit credential-helper $@'
$ git config --global credential.UseHttpPath true
$ git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/iwaki-repo
Cloning into 'iwaki-repo'...
warning: You appear to have cloned an empty repository.
$ cd iwaki-repo
$ echo "Hello World!!" > README.md
$ git add -A
$ git commit -m "first commit"
$ git push
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 239 bytes | 239.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Validating objects: 100%
To https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/iwaki-repo
 * [new branch]      master -> master

リポジトリを利用するユーザーにとっては、暗号化および復号化は透過的に処理されるので、CMKを利用しても操作感に影響はありません。

つぎに、単一リージョンキーからマルチリージョンキーへ変更してみます。リポジトリの設定画面から変更可能です。

単一リージョンキー同様にファイル更新した後、リポジトリにpushしてみます。

コマンド履歴は省略しますが、こちらもマルチリージョンキーに変更したからといって影響はありませんでした。

ちなみに、AWSマネージドキーへの変更も可能でした。

おわりに

PCI DSSをはじめとするコンプライアンス基準では、CMKによる暗号化を要件として定めているケースがあります。

以前のCodeCommitではCMKがサポートされていなかったため、利用を断念していた方には嬉しいアップデートではないでしょうか。

特にコンプライアンス要件がなければ、AWSマネージドキーの利用で良いと思います。

なお、CMKを作成すると7日経過しないと削除できないため、キーあたり最低7日分の料金が掛かることになります。検証時にはご注意ください。

本エントリが、どなたかのお役に立てれば幸いです。