[小ネタ]KMSカスタマーキーのエイリアス名を変更する方法

KMSカスタマーキーのエイリアス名を変更する方法です。KMSカスタマーキーのエイリアス名はGUIから変更できないようなのでCLIを使って変更する方法をまとめました。
2020.01.19

はじめに

こんにちは。大阪オフィスの林です。

記事を書いてる本日2020年1月19日は『い(1)い(1)く(9)うき【良い空気】』で『空気清浄機の日』だそうです(。 ・ω・))フムフム
ん?11月9日は?と思って少し調べたら『い(1)い(1)く(9)うき【良い空気】』で『換気の日』だそうです(*゚ェ゚))フムフム
みなさま、キレイな空気に入れ替えて体調管理にお気を付けください!

雑談はここまでにしておいて本題ですが、タイトルの通りKMSカスタマーキーのエイリアス名を変更する方法をまとめてみました!

なぜこの記事を書いているか?

CloudFormationでKMSのカスタマーキーを作るため、事前にどんなパラメータがあるのか検証がてらマネージメントコンソールから本番環境と同じ名前を使ってKMSのカスタマーキーを作っていました。
検証が終わったので作成したカスタマーキーを削除しようとしたところ、KMSでは安全上の理由からユーザーが設定した削除保留期間(7〜30日間)を経過してからでないと、カスタマーキーは削除されないというサービスの仕様・制約があり、即座にカスタマーキーを削除出来ないということが分かりました(完全に勉強不足。。。(´・_・`))

この時点で感じたこと

『あれ?これって最低7日間は同じ名前でKMSのカスタマーキー作れないのでは?』
もちろんですが削除保留期間を設定し「削除保留中」の状態にしたところで同じ名前でカスタマーキーを作成することは出来ません。

今回、CloudFormationを使って作成の検証をおこないたかったため、何としてもGUIで手動で作成してしまった本番環境と同じ名前のKMSカスタマーキーを消したかったのです。
『そうだ!!エイリアス名を変えてみよう!』
と思い、エイリアス名を変えようとしたのですが、マネージメントコンソールではエイリアス名を変えれる所がありません(見つけられません)でした\(゚ロ゚;)三(;゚ロ゚)/

で、なぜこの記事を書いているか?

という事で直ぐに同じ名前でKMSカスタマーキーを作り直せないかやり方を調べたのでまとめておきたい思い書かせて頂いています。

やりかた

たどり着いたのがAWS CLIでした。 色々調べましたが削除保留期間(7〜30日間)を待たずにKMSカスタマーキーを削除するということは出来ないと判断したため、既存のKSMカスタマーキーのエイリアス名を変更する方法をまとめていきたいと思います。

注意

KMSカスタマーキーの変更や削除は慎重におこなってください。使用中のKMSカスタマーキーが使用できなくなると、最悪の場合データを復号できなくなります。

やってみた

大きな流れ

  • KMSカスタマーキーのエイリアスの確認
  • KMSカスタマーキーのKeyArnの確認
  • エイリアス名を削除
  • 別のエイリアス名を付与

    KMSカスタマーキーのエイリアスの確認

    まずCLIでエイリアスの一覧を取得します。

  • コマンド
    aws kms list-keys
  • 結果
    "Aliases": [
        (他のエイリアスは省略)    
            {
                "AliasArn": "arn:aws:kms:ap-northeast-1:123456789012:alias/kms-test-key",
                #今回変更したいKMSカスタマーキーのエイリアス
                "AliasName": "alias/kms-test-key",
                "TargetKeyId": "95ca144f-f89a-xxxx-xxxx-xxxxxxxxxxxx"
            },
    
        ]
    

    対象のKMSカスタマーキーのエイリアスがあることを確認します。
    kms-test-keyは設定済みのエイリアス名です。AliasNameは以降の手順で使用するのでコピーしておいてください。TargetKeyIdは次の手順でKeyArnとの紐づけを確認する際に参照します。

    KMSカスタマーキーのKeyArnの確認

    次にKMSカスタマーキーのKeyArnを確認します。

  • コマンド
    aws kms list-aliases
  • 結果
    "Keys": [
        (他のエイリアスは省略)
            {
                "KeyArn": "arn:aws:kms:ap-northeast-1:123456789012:key/95ca144f-f89a-xxxx-xxxx-xxxxxxxxxxxx",
                "KeyId": "95ca144f-f89a-xxxx-xxxx-xxxxxxxxxxxx"
            },
        ]
    

    前述で確認したTargetKeyIdに紐づくKeyArnは以降の手順で使用するのでコピーしておいてください。

    エイリアス名を削除

    --alias-nameに前述で確認したAliasNameの値kms-test-keyを記載します。

  • コマンド
    aws kms delete-alias  --alias-name alias/kms-test-key
  • 結果
    戻り値は何もありません。

    このコマンドではキーそのものが削除保留状態になるわけではなく、エイリアス名が削除される(ブランク)になります。 マネージメントコンソールで状態を見てみると。エイリアスがブランクになっていることが分かります。

  • エイリアス名削除前

  • エイリアス名削除後

    新しく別のエイリアス名を付与

    最後に、別のエイリアス名を付与します。今回は--alias-nameに変更後のエイリアス名delete-kms-test-keyを指定します。--target-key-idにはKMSカスタマーキーのKeyArnの確認時に控えたKeyArnを記載します。

  • コマンド
    aws kms create-alias --alias-name alias/delete-kms-test-key  --target-key-id arn:aws:kms:ap-northeast-1:123456789012:key/95ca144f-f89a-xxxx-xxxx-xxxxxxxxxxxx

  • 結果
    戻り値は何もありません。

    マネージメントコンソールで状態を見てみると。ブランクだったエイリアスにdelete-kms-test-keyが再設定されていることが分かります。

    これで設定してしまっていたもともとの名前でKMSカスタマーキーを作ることが出来ますv( ̄∇ ̄)

    まとめ

    GUI(マネージメントコンソール)で出来ること出来ないこと、CLIで出来ること出来ないことは勿論それぞれあります。普段GUIで操作することが多いので、GUIで出来ない操作や設定をCLIを使って実現できないか?といった視点で環境を触ると知識も広がってやれることの幅も広がっていくのではないかと改めて感じた今日この頃でした!

    以上、大阪オフィスの林がお送りしました!