キーの作成 - AWS Key Management Service

キーの作成

AWS Management Console で、または CreateKey オペレーションまたは AWS CloudFormation テンプレートを使用して、AWS KMS keys を作成できます。このプロセスの最中に、KMS キーのタイプ、そのリージョナリティ (単一リージョンまたはマルチリージョン)、およびキーマテリアルのオリジン (デフォルトでは AWS KMS がユーザーに代わって作成する) を選択します。KMS キー作成後にこれらのプロパティを変更することはできません。KMS キーのキーポリシーも設定します。これはいつでも変更できます。

このトピックでは、基本的な KMS キーである対称暗号化 KMS キーを、AWS KMS からのキーマテリアルを使用して単一リージョン用に作成する方法を説明します。この KMS キーを使用して、AWS のサービス内のリソースを保護することができます。対称暗号化 KMS キーの詳細については、「SYMMETRIC_DEFAULT キー仕様」を参照してください。他のタイプのキーの作成については、「特定用途のキー」を参照してください。

AWS のサービスで保存または管理するデータを暗号化するための KMS キーを作成している場合は、対称暗号化 KMS キーを作成します。AWS KMS と統合された AWS のサービスは、データの暗号化に対称暗号化 KMS キーのみを使用します。これらのサービスは、非対称 KMS キーを使用する暗号化をサポートしません。作成する KMS キーのタイプを決定する方法については、KMS キータイプの選択 を参照してください。

注記

対称 KMS キーは、対称暗号化 KMS キーと呼ばれるようになりました。AWS KMS は、対称暗号化 KMS キー (デフォルトのタイプ) と、同じく対称キーである HMAC KMS キーの 2 種類の対称 KMS キーをサポートしています。

AWS KMS コンソールで KMS キーを作成するときは、エイリアス (フレンドリ名) を指定する必要があります。CreateKey オペレーションでは、新しい KMS キーのエイリアスは作成されません。新規または既存の KMS キーのエイリアスを作成するには、CreateAlias オペレーションを使用します。AWS KMS のエイリアスの詳細については、「エイリアスの使用」を参照してください。

このトピックでは、対称暗号化 KMS キーの作成方法を説明します。

詳細はこちら:

KMS キーを作成するためのアクセス許可

コンソールで、または API を使用して KMS キーを作成するには、IAM ポリシーで次のアクセス許可を持っている必要があります。可能な限り、条件キーを使用してアクセス許可を制限します。例えば、IAM ポリシーで kms:KeySpec 条件キーを使用して、プリンシパルが対称暗号化キーのみを作成できるようにすることが可能です。

キーを作成するプリンシパルの IAM ポリシーの例については、「KMS キーの作成をユーザーに許可する」を参照してください。

注記

タグとエイリアスを管理する許可をプリンシパルに付与する場合は注意が必要です。タグまたはエイリアスを変更すると、カスタマーマネージドキーに対するアクセス許可が許可または拒否される可能性があります。詳細については、「AWS KMS の ABAC」を参照してください。

kms:PutKeyPolicy アクセス許可は、KMS キーの作成には必要ありません。kms:CreateKey アクセス許可には、初期キーポリシーを設定する許可が含まれています。ただし、KMS キーの作成時にこのアクセス許可をキーポリシーに追加して、KMS キーへのアクセスを制御できるようにする必要があります。代替方法として、BypassLockoutSafetyCheck パラメータを使用します。これは推奨されていません。

KMS キーは、作成された AWS アカウントに属します。KMS キーを作成する IAM ユーザーはキー所有者とはみなされないため、作成した KMS キーを使用または管理するためのアクセス許可が自動的に付与されません。他のプリンシパルと同様に、キー作成者は、キーポリシー、IAM ポリシー、またはグラントを使用してアクセス許可を取得する必要があります。ただし、kms:CreateKey アクセス許可を持つプリンシパルは、初期キーポリシーを設定し、キーを使用または管理するためのアクセス許可を自分自身に付与できます。

対称暗号化 KMS キーの作成

KMS キーは、AWS Management Console、または AWS KMS API を使用して作成することができます。

このトピックでは、基本的な KMS キーである対称暗号化 KMS キーを、AWS KMS からのキーマテリアルを使用して単一リージョン用に作成する方法を説明します。この KMS キーを使用して、AWS のサービス内のリソースを保護することができます。他のタイプのキーの作成については、「特定用途のキー」を参照してください。

対称暗号化 KMS キーの作成 (コンソール)

AWS Management Console を使用して AWS KMS keys (KMS キー) を作成します。

  1. AWS Management Console にサインインし、AWS Key Management Service (AWS KMS) コンソール (https://console.aws.amazon.com/kms) を開きます。

  2. AWS リージョン を変更するには、ページの右上隅にあるリージョンセレクターを使用します。

  3. ナビゲーションペインで、[Customer managed keys] (カスタマーマネージドキー) を選択します。

  4. [Create key] (キーの作成) を選択します。

  5. 対称暗号化 KMS キーを作成するには、[Key type]] (キーのタイプ) で [Symmetric] (対称) を選択します。

    AWS KMS コンソールで非対称 KMS キーを作成する方法については、「非対称 KMS キーを作成する (コンソール)」を参照してください。

  6. [Key usage] (キーの使用) では、[Encrypt and decrypt] (暗号化および復号) オプションがすでに選択されています。

    MAC コードを生成して検証する KMS キーの作成方法については、「HMAC KMS キーの作成」を参照してください。

  7. [Next] (次へ) を選択します。

    [Advanced options] (詳細オプション) については、「特定用途のキー」を参照してください。

  8. KMS キーのエイリアスを入力します。エイリアス名の先頭を aws/ にすることはできません。この aws/ プレフィックスは、アカウント内の AWS マネージドキー を表すために、Amazon Web Services によって予約されます。

    注記

    エイリアスを追加、削除、更新すると、KMS キーに対するアクセス許可が許可または拒否される可能性があります。詳細については、「AWS KMS の ABAC」および「エイリアスを使用して KMS キーへのアクセスを制御する」を参照してください。

    エイリアスは KMS キーを識別するために使用する表示名です。保護する予定のデータタイプ、または KMS キーで使用する予定のアプリケーションを示すエイリアスを選択することをお勧めします。

    エイリアスは AWS Management Console で KMS キーを作成するときに必要です。CreateKey オペレーションを使用する場合、これらのオペレーションはオプションです。

  9. (オプション) KMS キーの説明を入力します。

    今すぐ説明を追加するか、キーの状態Pending Deletion または Pending Replica Deletion でない限り、後でいつでも更新できます。既存のカスタマーマネージドキーの説明を追加、変更、削除するには、AWS Management Console で説明を編集するかUpdateKeyDescription オペレーションを使用します。

  10. (オプション) タグキーとオプションのタグ値を入力します。KMS キーに複数のタグを追加するには、[Add tag] (タグを追加) を選択します。

    注記

    KMS キーのタグ付けまたはタグ解除により、KMS キーに対するアクセス許可が許可または拒否される可能性があります。詳細については、「AWS KMS の ABAC」および「タグを使用してKMS キーへのアクセスを制御する」を参照してください。

    AWS リソースにタグを追加すると、使用量とコストがタグごとに集計されたコスト配分レポートが AWS によって生成されます。タグは、KMS キーへのアクセスの制御にも使用できます。KMS キーのタグ付けについては、キーのタグ付け および AWS KMS の ABAC を参照してください。

  11. [Next] (次へ) を選択します。

  12. KMS キーを管理できる IAM ユーザーとロールを選択します。

    注記

    このキーポリシーにより、AWS アカウント はこの KMS キーを完全に制御できるようになります。これにより、アカウント管理者は IAM ポリシーを使用して、他のプリンシパルに KMS キーを管理する許可を付与できます。詳細については、「デフォルトのキーポリシー」を参照してください。

  13. (オプション) 選択した IAM ユーザーとロールがこの KMS キーを削除しないようにするには、ページの下部にある [Key deletion] (キーの削除) セクションで、[Allow key administrators to delete this key] (キー管理者にこのキーの削除を許可する) のチェックボックスをオフにします。

  14. [Next] (次へ) を選択します。

  15. 暗号化オペレーションでキーを使用できる IAM ユーザーとロールを選択します。

    注記

    このキーポリシーにより、AWS アカウント はこの KMS キーを完全に制御できるようになります。これにより、アカウント管理者は IAM ポリシーを使用して、他のプリンシパルに暗号化オペレーションで KMS キーを管理する許可を付与できます。詳細については、「デフォルトのキーポリシー」を参照してください。

  16. (オプション) 他の AWS アカウント が暗号化オペレーションにこの KMS キーを使用できるようにします。これを行うには、ページの下部にある [Other AWS アカウント] (その他の AWS アカウント) セクションで、[Add another AWS アカウント] (他の AWS アカウント の追加) を選択し、外部アカウントの AWS アカウント ID 番号を入力します。複数の外部アカウントを追加するには、この手順を繰り返します。

    注記

    外部アカウントでプリンシパルが KMS キーを使用できるようにするには、外部アカウントの管理者が、これらのアクセス許可を付与する IAM ポリシーを作成する必要があります。詳細については、「他のアカウントのユーザーに KMS キーの使用を許可する」を参照してください。

  17. [Next] (次へ) を選択します。

  18. 選択したキー設定を確認します。戻って、すべての設定を変更することもできます。

  19. [Finish] (完了) を選択し、KMS キーを作成します。

対称暗号化 KMS キーの作成 (AWS KMS API)

CreateKey オペレーションを使用して、すべてのタイプの AWS KMS keys を作成できます。以下の例では AWS Command Line Interface (AWS CLI) を使用しますが、サポートされている任意のプログラミング言語を使用することができます。

次のオペレーションでは、最も一般的に使用される KMS キーを作成します。これは、AWS KMS で生成されたキーマテリアルにバックアップされた、単一リージョンの対称暗号化キーです。このオペレーションには必須パラメータはありません。ただし、キーポリシーを指定するために Policy パラメータが必要になる場合もあります。キーポリシー (PutKeyPolicy) を変更したり、 説明タグ などのオプション要素をいつでも追加したりできます。また、非対称キーマルチリージョンキーインポートされたキーマテリアルを含むキー、およびカスタムキーストア内のキーも作成できます。

CreateKey オペレーションでは、エイリアスを指定することはできませんが、CreateAlias オペレーションを実行して、新しい KMS キーのエイリアスを作成できます。

次の例では、パラメータを指定せずに CreateKey オペレーションを呼び出します。このコマンドでは、すべてのデフォルト値が使用されます。これは、AWS KMS が生成したキーマテリアルで対称暗号化 KMS キーを作成します。

$ aws kms create-key { "KeyMetadata": { "Origin": "AWS_KMS", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Description": "", "KeyManager": "CUSTOMER", "Enabled": true, "KeySpec": "SYMMETRIC_DEFAULT", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "CreationDate": 1502910355.475, "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "MultiRegion": false "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], } }

新規の KMS キーにキーポリシーを指定しない場合、CreateKey が適用するデフォルトのキーポリシーは、新規の KMS キーを作成するときに使用され、コンソールが適用するデフォルトのキーポリシーとは異なります。

たとえば、 GetKeyPolicy オペレーションに対するこの呼び出しは、 CreateKey 適用されるキーポリシーを返します。これは、AWS アカウント に KMS キーへのアクセス許可を付与して、KMS キーの AWS Identity and Access Management (IAM) ポリシーを作成できるようにします。IAM ポリシーおよび KMS キーのキーポリシーの詳細については、「AWS KMS の認証とアクセスコントロール」を参照してください。

$ aws kms get-key-policy --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --policy-name default --output text { "Version" : "2012-10-17", "Id" : "key-default-1", "Statement" : [ { "Sid" : "Enable IAM policies", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*", "Resource" : "*" } ] }