AWS KMS リソースへのアクセスの管理の概要 - AWS Key Management Service

AWS KMS リソースへのアクセスの管理の概要

すべての AWS リソースは AWS アカウントに属し、リソースの作成またはアクセスの権限はそのアカウントのアクセス権限ポリシーで定義されます。アカウント管理者は、アクセス権限ポリシーを IAM アイデンティティ (ユーザー、グループ、ロール) にアタッチできます。一部のサービス (AWS KMS を含む) もその他の種類のリソースにアクセス権限ポリシーをアタッチすることができます。

注記

アカウント管理者 (または管理者ユーザー) は、管理者権限を持つユーザーです。詳細については、IAM ユーザーガイドの「管理者のユーザーおよびグループの作成」を参照してください。

アクセス権限を管理する場合、アクセス権限を取得するユーザー、そのユーザーがアクセス権限を取得するリソース、および許可される具体的なアクションを決定します。

AWS KMS リソースおよびオペレーション

AWS KMS では、プライマリリソースは カスタマーマスターキー (CMK) です。AWS KMS では、エイリアスもサポートしています。エイリアスは、CMK とは独立していますが、CMK と関連付けることができるフレンドリ名を提供します。一部の AWS KMS オペレーションでは、エイリアスを使用して CMK を識別できます。

CMK またはエイリアスの各インスタンスには、標準形式の一意の Amazon リソースネーム (ARN) があります。AWS KMS リソースの場合、AWS のサービス名は kms です。

  • カスタマーマスターキー (CMK)

    ARN 形式:

    arn:AWS partition name:AWS service name:AWS Region:AWS account ID:key/CMK key ID

    ARN の例:

    arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

  • エイリアス

    ARN 形式:

    arn:AWS partition name:AWS service name:AWS region:AWS account ID:alias/alias name

    ARN の例:

    arn:aws:kms:us-west-2:111122223333:alias/example-alias

AWS KMS には、AWS KMS リソースを操作するための一連の API オペレーションが用意されています。AWS マネジメントコンソール および AWS KMS API オペレーションでの CMK の識別の詳細については、「キー識別子 (KeyId)」を参照してください。AWS KMS オペレーションのリストについては、AWS Key Management Service API Referenceを参照してください。

AWS KMS CMK へのアクセスの管理

AWS KMS CMK へのアクセスを管理する主な手段は、ポリシーです。ポリシーは、誰が何にアクセスできるかを説明するドキュメントです。IAM アイデンティティにアタッチされたポリシーはアイデンティティベースのポリシー (または IAM ポリシー) と呼ばれ、その他の種類のリソースにアタッチされたポリシーはリソースベースのポリシーと呼ばれます。AWS KMS では、カスタマーマスターキー (CMK) にリソースベースのポリシーをアタッチする必要があります。これをキーポリシーと呼びます。すべての KMS CMK にはキーポリシーがあります。

以下の方法で KMS CMK へのアクセスを制御できます。

  • キーポリシーを使用 – キーポリシーを使用して、CMK へのアクセスを制御する必要があります。キーポリシーを単独で使用してアクセスを制御できます。この場合、CMK へのアクセスの完全な範囲が 1 つのドキュメント (キーポリシー) で定義されます。

  • IAM ポリシーをキーポリシーと組み合わせて使用 – IAM ポリシーをキーポリシーと組み合わせて、CMK へのアクセスを制御することができます。この方法でアクセスを制御すると、IAM で IAM アイデンティティのすべてのアクセス権限を管理できます。

  • 許可をキーポリシーと組み合わせて使用 – 許可をキーポリシーと組み合わせて使用して、CMK へのアクセスを許可することができます。この方法でアクセスを制御すると、キーポリシーで CMK へのアクセスを許可し、ユーザーが他のユーザーにアクセスを委任できるようになります。

ほとんどの AWS サービスで、IAM ポリシーはサービスのリソースへのアクセスを制御する唯一の方法です。一部のサービスでは、IAM ポリシーを補完するために、リソースベースのポリシーやその他のアクセスコントロールメカニズムを提供していますが、これらは通常オプションであり、IAM ポリシーでのみ、これらのサービスのリソースへのアクセスを制御できます。ただし、AWS KMS については該当しません。KMS CMK にアクセスを許可するには、キーポリシーを単独で、または IAM ポリシーや許可と組み合わせて使用する必要があります。IAM ポリシー単独では、CMK へのアクセスを許可するのに十分ではありませんが、CMK のキーポリシーと組み合わせて使用することができます。

キーポリシーの使用の詳細については、「キーポリシーの使用」を参照してください。

IAM ポリシーの使用の詳細については、「IAM ポリシーの使用」を参照してください。

許可の使用の詳細については、「許可の使用」を参照してください。

ポリシーでのアクセス許可の指定

AWS KMS は一連の API オペレーションを提供します。これらの API オペレーションへのアクセスを制御するために、AWS KMS ではポリシーで指定できる一連のアクションが用意されています。詳細については、「AWS KMS API アクセス許可のリファレンス」を参照してください。

ポリシーは、一連のアクセス権限を記述したドキュメントです。以下に、ポリシーの基本的な要素を示します。

  • リソース – IAM ポリシーで Amazon リソースネーム (ARN) を使用して、ポリシーを適用するリソースを指定します。詳細については、「AWS KMS リソースおよびオペレーション」を参照してください。キーポリシーでは、リソースに "*" を使用します (実質的に「この CMK」を意味します)。 キーポリシーは、それがアタッチされた CMK にのみ適用されます。

  • アクション – アクションを使用して、許可または拒否する API オペレーションを指定します。たとえば、kms:Encrypt アクションは AWS KMS の暗号化 オペレーションに対応します。

  • 効果 – 効果を使用して、アクセス権限を許可するか拒否するかを指定します。リソースへのアクセスを明示的に許可していない場合、アクセスは暗黙的に拒否されます。また、明示的にリソースへのアクセスを拒否すると、別のポリシーによってアクセスが許可されている場合でも、ユーザーはそのリソースにアクセスできなくなります。

  • プリンシパル – IAM ポリシーでは、AWS プリンシパルを指定しません。代わりに、ポリシーがアタッチされたアイデンティティ (IAM ユーザー、グループ、またはロール) が、暗黙的なプリンシパルになります。キーポリシーでは、アクセス権限を適用するプリンシパル (アイデンティティ) を指定する必要があります。プリンシパルとして、AWS アカウント (ルート)、IAM ユーザー、IAM ロール、および一部の AWS サービスをキーポリシーで指定できます。IAM グループは、キーポリシーで有効なプリンシパルではありません。

詳細については、「キーポリシーの使用」および「IAM ポリシーの使用」を参照してください。

ポリシーでの条件を指定する

条件という別のポリシー要素を使用して、ポリシーが有効になる状況を指定できます。たとえば、特定の日付の後にのみ適用されるポリシーステートメントが必要になる場合があります。または、特定の値が API リクエストに存在するかどうかに基づいて、ポリシーステートメントによるアクセスコントロールが必要になる場合があります。

条件を指定するには、あらかじめ定義された条件キーを使用します。通常、一部の条件キーは AWS に適用され、一部は AWS KMS に固有です。詳細については、「ポリシー条件の使用」を参照してください。