AWS

ハンズオンで学ぶAWS KMS:CLIで始めるキー作成・暗号化・復号

NEW 2026年8月19日

目次Category


はじめに

この記事の目的

本記事では、AWS Key Management Service (KMS) の基本を解説します。
AWS CLIを使って、キー作成からデータの暗号化・復号までの手順を体験しましょう。

💡 カスタマーマネージドキー (CMK) を使う理由

AWS KMSのキーには「AWSマネージドキー」と

「カスタマーマネージドキー (CMK)」の2種類があります。

CMKはユーザー自身で管理できるキーです。アクセス制限やローテーションの設定を細かく変更できるため、実務でよく使われます。

対象者

  • AWSでの暗号化の基本を学びたい方
  • AWS CLIの基本操作(aws configureなど)ができる方

AWS KMSの概要と導入メリット

AWS KMSは、暗号化キーを安全に作成・管理するためのフルマネージド型サービスです。
機密データやファイルを安全に保管するために欠かせない機能を提供しています。

■ KMSを利用する3つのメリット
  • 高水準なセキュリティ: 専用のハードウェアセキュリティモジュール (HSM) でキーを保護します。
  • アクセス制御の容易さ: IAMポリシーを用いて「誰がキーを使えるか」を厳格に管理できます。
  • 詳細な操作ログ: AWS CloudTrailと連携し、「いつ・誰がキーを使ったか」を監査できます。

前提条件・環境準備

AWS環境の事前準備

KMSを操作するために、適切なIAM権限を用意してください。
必要な権限は kms:CreateKeykms:Encryptkms:Decryptです。

■ AWS CLIの設定

コマンドラインから操作するために、AWS CLIを導入します。インストールと認証設定を完了させておきましょう。

AWS CLI 公式ドキュメント

Step 1: カスタマーマネージドキーの作成

AWS CLIを使い、独自の暗号化キー(KMSキー)を作成します。

■ 手順1: KMSキーの作成

ターミナルで以下のコマンドを実行します。

Terminal
aws kms create-key --description "My Sample KMS Key"
■ コマンド実行結果(レスポンス例)

コマンドが成功すると、作成されたキーのメタデータが返却されます。

次以降の手順で使用するため、KeyIdの値を控えておきましょう。

出力(JSON形式)KeyId に注目
{
     "KeyMetadata" : {
         "AWSAccountId" : "11111111111111"
        "KeyId" : "fsad7re8afd4sf8ef45sd3fa8efsx28f"
         "Arn" : "arn:aws:kms:ap-northeast-1:mdsafnimvdsoamoewavn""CreationDate" : "2026-08-17T12:00:00.000000+09:00""Enabled" : true"Description" : "My Sample KMS Key""KeyUsage" : "ENCRYPT_DECRYPT""KeyState" : "Enabled""Origin" : "AWS_KMS""KeyManager" : "CUSTOMER""CustomerMasterKeySpec" : "SYMMETRIC_DEFAULT""KeySpec" : "SYMMETRIC_DEFAULT""EncryptionAlgorithms" : [
             "SYMMETRIC_DEFAULT"
        ],
        "MultiRegion" : false"CurrentKeyMaterialId" : "9rew0fgie0dgsd0-0wea9rafdjdsokvmdasofodpskvragvofdpmrjgrjibmi"
    }
}
■ 手順2: エイリアス(表示名)の作成

KeyIdは長いため、わかりやすい別名(エイリアス)を付けます。

控えた KeyIdを指定して実行してください。

Terminal
aws kms create-alias \
    --alias-name alias/ojt-[name]-key \
    --target-key-id <あなたのKeyId>

Step 2: データの暗号化と復号の検証

作成したKMSキーを使用し、データの暗号化と復号を試します。

■ 手順1: 暗号化の実行

「Hello KMS」という文字列を暗号化します。

暗号化データは encrypted-data.txtに保存されます。

Terminal
aws kms encrypt \
    --key-id alias/ojt-[name]-key \
    --plaintext fileb://<(echo -n "Hello KMS") \
    --output text \
    --query CiphertextBlob | base64 --decode > encrypted-data.txt
■ 手順2: 復号の実行

保存した暗号化ファイルを読み込み、元の文字列に戻します。

Terminal
aws kms decrypt \
    --ciphertext-blob fileb://encrypted-data.txt \
    --output text \
    --query Plaintext | base64 --decode

画面に Hello KMSと出力されれば成功です。

よくあるエラーと対処法

操作中にエラーが発生した場合は、以下の点を確認してください。

⚠️ AccessDeniedException(権限不足)

IAMユーザーまたはロールに kms:Encryptkms:Decryptの権限が付与されているか確認してください。

また、KMSキーのキーポリシーで拒否されていないかも確認が必要です。

⚠️ NotFoundException(キーが見つからない)

指定した KeyId やエイリアス名に誤りがないかご確認ください。

また、AWS CLIで設定されているリージョン(us-east-1ap-northeast-1など)が、

キーを作成したリージョンと一致しているかもチェックしましょう。

後片付け(リソースの削除・無効化)

検証が終わったら、不要な課金を防ぐために作成したリソースを削除・無効化します。

■ 手順1: エイリアスの削除
Terminal
aws kms delete-alias --alias-name alias/ojt-[name]-key
■ 手順2: KMSキーの削除予約

KMSキーは即時削除ができません。最小7日間の保留期間を設定して削除を予約します。

Terminal
aws kms schedule-key-deletion --key-id <あなたのKeyId> --pending-window-in-days 7

参考サイト

この記事を書いた人

村守俊一

shunichi_muramori

26卒 ITソリューション部ビジネスソリューションセクション