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

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

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

注記

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

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

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

AWS KMS では、プライマリリソースは AWS KMS keys です。AWS KMS は、KMS キーのわかりやすい名前を提供する独立したリソースであるエイリアスもサポートします。一部の AWS KMS オペレーションでは、エイリアスを使用して KMS 許可キーを識別できます。

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

  • AWS KMS key

    ARN 形式:

    arn:AWS partition name:AWS service name:AWS リージョン:AWS アカウント ID:key/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 リージョン:AWS アカウント ID:alias/alias name

    ARN の例:

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

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

KMS キーへのアクセスを管理する

KMS キーへのアクセスを管理する主な方法は、ポリシーの使用です。ポリシーは、どのプリンシパルがどのリソースにアクセスできるかを記述するドキュメントです。IAM アイデンティティにアタッチされたポリシーは アイデンティティベースのポリシー (または IAM ポリシー)と呼ばれ、他の種類のリソースにアタッチされたポリシーは リソースベースのポリシーと呼ばれます。AWS KMS では、KMS キーにリソースベースのポリシーをアタッチする必要があります。これをキーポリシーと呼びます。すべての KMS キーにはキーポリシーがあります。

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

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

  • IAM ポリシーとキーポリシーを組み合わせて使用する — IAM ポリシーをキーポリシーと組み合わせて使用し、KMS キーへのアクセスを制御できます。この方法でアクセスを制御すると、IAM の IAM ID に対するすべてのアクセス許可を管理できます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

属性ベースのアクセスコントロール (ABAC) をサポートするために、AWS KMS は、タグとエイリアスに基づいて KMS キーへのアクセスを制御する条件キーを提供します。詳細については、「AWS KMS の ABAC を使用する」を参照してください。