AWS KMS のエイリアス - AWS Key Management Service

AWS KMS のエイリアス

「エイリアス」は、AWS KMS key のわかりやすい名前です。例えば、エイリアスを使用すると、1234abcd-12ab-34cd-56ef-1234567890ab の代わりに KMS キーを test-key として参照できます。

エイリアスを使用して、AWS KMS コンソール、DescribeKey オペレーション、暗号化オペレーション (Encrypt および GenerateDataKey など) で KMS キーを識別できます。エイリアスを使用すると、AWS マネージドキー の認識が容易になります。これらの KMS キーのエイリアスは、常に aws/<service-name> の形式になります。例えば、Amazon DynamoDB の AWS マネージドキー のエイリアスは aws/dynamodb です。プロジェクトやカテゴリの名前をエイリアスの前に付けるなど、プロジェクトに対して同様のエイリアス標準を設定できます。

ポリシーを編集したり、権限を管理したりすることなく、エイリアスに基づいて KMS キーへのアクセスを許可および拒否することもできます。この機能は、属性ベースのアクセスコントロール (ABAC) の AWS KMS サポートの一部です。詳細については、「エイリアスを使用して KMS キーへのアクセスを制御する」を参照してください。

エイリアスの機能の強みは、エイリアスに関連付けられている KMS キーをいつでも変更できることです。エイリアスを使用すると、コードの記述と保守が容易になります。例えば、エイリアスを使用して特定の KMS キーを参照し、KMS キーを変更するとします。この場合は、単にエイリアスを別の KMS キーに関連付けます。コードを変更する必要はありません。

エイリアスを使用すると、別の AWS リージョン で同じコードを再利用することも容易になります。複数のリージョンで同じ名前のエイリアスを作成し、各エイリアスをそのリージョンの KMS キーに関連付けます。コードが各リージョンで実行されると、エイリアスは関連付けられた KMS キーをそのリージョンで参照します。例については、アプリケーションでエイリアスを使用する方法について説明します。を参照してください。

AWS KMS コンソールで、あるいは CreateAlias API もしくは AWS::KMS::Alias CloudFormation テンプレートを使用して、KMS キーのエイリアスを作成することができます。

AWS KMS API では、各アカウントとリージョンのエイリアスを完全に制御できます。API には、エイリアスの作成 (CreateAlias)、エイリアス名とエイリアス ARN の表示 (ListAliases)、エイリアスに関連付けられている KMS キーの変更 (UpdateAlias)、エイリアスの削除 (DeleteAlias) のオペレーションが含まれます。

エイリアスの仕組み

AWS KMS におけるエイリアスの仕組みについて説明します。

エイリアスは独立した AWS リソース

エイリアスは、KMS キーのプロパティではありません。エイリアスに対して実行するアクションは、エイリアスに関連付けられた KMS キーには影響しません。KMS キーのエイリアスを作成してエイリアスを更新し、別の KMS キーに関連付けることができます。関連付けられた KMS キーに影響を与えずに、エイリアスを削除することもできます。ただし、KMS キーを削除すると、その KMS キーに関連付けられているすべてのエイリアスが削除されます。

IAM ポリシーでリソースとしてエイリアスを指定した場合、ポリシーは、関連付けられた KMS キーではなく、エイリアスを参照します。

各エイリアスには 2 つの形式があります。

エイリアスを作成するときは、エイリアス名を指定します。AWS KMS は、エイリアス ARN を作成します。

  • エイリアス ARN は、エイリアスを一意に識別する Amazon リソースネーム(ARN)です。

    # Alias ARN arn:aws:kms:us-west-2:111122223333:alias/<alias-name>
  • エイリアス名は、アカウントとリージョンで一意です。AWS KMS API では、エイリアス名は常に alias/ によってプレフィックスされます。そのプレフィックスは、AWS KMS コンソールで、除外されます。

    # Alias name alias/<alias-name>
エイリアスはシークレットではありません

エイリアスは、CloudTrail ログやその他の出力にプレーンテキストで表示される場合があります。エイリアス名には、機密情報や重要情報を含めないでください。

各エイリアスは、一度に 1 つの KMS キーに関連付けられる

エイリアスとその KMS キーは、同じアカウントとリージョンに存在する必要があります。

エイリアスは、同じ AWS アカウント およびリージョン内のカスタマーマネージドキーに関連付けることができます。ただし、エイリアスを AWS マネージドキー に関連付ける許可はありません。

例えば、この ListAliases 出力では、test-key エイリアスが正確に 1 つのターゲット KMS キーに関連付けられていることが示されています。これは、TargetKeyId プロパティによって表されます。

{ "AliasName": "alias/test-key", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/test-key", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1593622000.191, "LastUpdatedDate": 1593622000.191 }
複数のエイリアスを同じ KMS キーに関連付けることができる

例えば、test-keyproject-key のエイリアスを同じ KMS キーに関連付けることができます。

{ "AliasName": "alias/test-key", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/test-key", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1593622000.191, "LastUpdatedDate": 1593622000.191 }, { "AliasName": "alias/project-key", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/project-key", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1516435200.399, "LastUpdatedDate": 1516435200.399 }
エイリアスは、アカウントとリージョン内で一意である必要があります

例えば、各アカウントとリージョンに test-key エイリアスを 1 つだけ持つことができます。エイリアスでは大文字と小文字が区別されますが、大文字と小文字だけが異なるエイリアスは非常にエラーが発生しやすくなります。エイリアス名は変更できません。ただし、エイリアスを削除して、目的の名前で新しいエイリアスを作成することはできます。

異なるリージョンに同じ名前のエイリアスを作成することができます

例えば、米国東部 (バージニア北部) に finance-key エイリアスを持つことができ、ヨーロッパ (フランクフルト) に finance-key エイリアスを持つことができます。各エイリアスは、そのリージョンの KMS キーに関連付けられます。コードが alias/finance-key のようなエイリアス名を参照している場合は、複数のリージョンで実行できます。各リージョンでは、異なる KMS キーが使用されます。詳細については、「アプリケーションでエイリアスを使用する方法について説明します。」を参照してください。

エイリアスに関連付けられている KMS キーを変更できる

UpdateAlias オペレーションを使用して、エイリアスを別の KMS キーに関連付けることができます。例えば、finance-key エイリアスが 1234abcd-12ab-34cd-56ef-1234567890ab KMS キーに関連付けられている場合、0987dcba-09fe-87dc-65ba-ab0987654321 KMS キーに関連付けられるようにエイリアスを更新できます。

ただし、現在の KMS キーと新しい KMS キーが同じタイプ (両方とも対称または非対称、もしくは両方とも HMAC) であり、同じキー使用法 (ENCRYPT_DECRYPT、SIGN_VERIFY、GENERATE_VERIFY_MAC のいずれか) である必要があります。この制限により、エイリアスを使用するコードのエラーが防止されます。エイリアスを別のタイプのキーに関連付ける必要があり、リスクを軽減した場合は、エイリアスを削除して再作成できます。

一部の KMS キーにはエイリアスがない

AWS KMS コンソールで KMS キーを作成する場合、KMS キーに新しいエイリアスを割り当てる必要があります。ただし、CreateKey オペレーションを使用して KMS キーを作成する場合、エイリアスは必要ありません。また、UpdateAlias オペレーションを使用してエイリアスに関連付けられている KMS キーを変更し、DeleteAlias オペレーションを使用してエイリアスを削除することもできます。そのため、KMS キーには、複数のエイリアスを持つものもあれば、エイリアスを持たないものもあります。

AWS によってアカウントにエイリアスが作成される

AWS では AWS マネージドキー のアカウントでエイリアスを作成します。これらのエイリアスには alias/aws/<service-name>, 、のような形式の名前 alias/aws/s3があります。

一部の AWS エイリアスには KMS キーがありません。これらの定義済みエイリアスは、通常、サービスの使用をスタートすると、AWS マネージドキー に関連付けられます。

エイリアスを使用して KMS キーを識別する

エイリアス名またはエイリアス ARN を使用して、暗号化オペレーションDescribeKeyGetPublicKey で KMS キーを識別できます。(KMS キーが別の AWS アカウント にある場合は、そのキー ARN またはエイリアス ARN を使用する必要があります)。エイリアスは、他の AWS KMS オペレーションでは、KMS キーの有効な識別子ではありません 各 AWS KMS API オペレーションの有効なキー識別子については、AWS Key Management Service API リファレンスKeyId パラメータの説明を参照してください。

エイリアス名、またはエイリアス ARN を使用して、IAM ポリシーの KMS キーを識別することはできません。エイリアスに基づいて KMS キーへのアクセスを制御するには、kms:RequestAlias または kms:ResourceAliases 条件キーを使用します。詳細については、「AWS KMS の ABAC」を参照してください。