KMS キーのアクセスとアクセス許可 - AWS Key Management Service

KMS キーのアクセスとアクセス許可

AWS KMS を使用する場合は、AWS によってリクエストの認証に使用される認証情報が必要です。認証情報には、AWS リソース (AWS KMS keysとエイリアス) にアクセスするためのアクセス許可を含める必要があります。AWS プリンシパルは、そのアクセス許可が明示的に提供され、拒否されていない限り、KMS キーに対して何もアクセス許可はありません。KMS キーを使用または管理するための暗黙的または自動的な権限はありません。

KMS キーへのアクセスを制御するには、次のポリシーメカニズムを使用できます。

  • キーポリシー — すべての KMS キーにはキーポリシーがあります。これは、KMS キーへのアクセスを制御するための主要メカニズムです。キーポリシーを単独で使用してアクセスを制御できます。この場合、KMS キーへのアクセスの完全な範囲が 1 つのドキュメント (キーポリシー) で定義されます。キーポリシーの使用の詳細については、「キーポリシー」を参照してください。

  • IAM ポリシー — IAM ポリシーをキーポリシーと組み合わせて使用し、KMS キーへのアクセスを制御できるように許可を付与します。この方法でアクセスを制御すると、IAM の IAM ID に対するすべてのアクセス許可を管理できます。IAM ポリシーを使用して KMS キーへのアクセスを許可するには、キーポリシーで明示的に許可する必要があります。IAM ポリシーの使用の詳細については、「IAM ポリシー」を参照してください。

  • グラント — グラントをキーポリシーおよび IAM ポリシーと組み合わせて使用し、KMS キーへのアクセスを許可します。この方法でアクセスを制御すると、キーポリシーで KMS キーへのアクセスを許可し、アイデンティティが他のユーザーにアクセスを委任できるようになります。グラントの使用の詳細については、「AWS KMS でのグラント」を参照してください。

KMS キーポリシー

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

すべての KMS キーにはキーポリシーがあります。指定しない場合、このポリシーは AWS KMS によって作成されます。AWS KMS が使用するデフォルトのキーポリシーは、キーが AWS KMS コンソールで作成されたかどうか、または AWS KMS API を使用したかどうかによって異なります。デフォルトのキーポリシーを編集して、最小特権のアクセス許可に関する組織の要件に合わせることをお勧めします。

キーと IAM プリンシパルが同じ AWS アカウントにある場合は、キーポリシーを単独で使用してアクセスを制御できます。この場合、KMS キーへのアクセス全体が 1 つのドキュメント (キーポリシー) で定義されることになります。ただし、あるアカウントの発信者が別のアカウントのキーにアクセスする場合には、キーポリシーのみでアクセスを許可することはできません。複数アカウントにまたがるシナリオにおいては、呼び出し元が API コールを行うことを明示的に許可する IAM ポリシーを呼び出し元のユーザーまたはロールにアタッチする必要があります。

また、IAM ポリシーをキーポリシーと組み合わせて使用して、KMS キーへのアクセス制御を許可することもできます。IAM ポリシーを使用して KMS キーへのアクセスを制御するには、IAM ポリシーを使用するアクセス許可を、キーポリシーによりアカウントに付与する必要があります。IAM ポリシー を有効にするキーポリシーステートメントを指定するか、もしくはキーポリシー内で許可対象のプリンシパルを明示的に指定できます。

ポリシーを作成するユーザーは、次のアクションをどのユーザーが実行できるかを制限できる十分なコントロールを備えている必要があります。

  • IAM および KMS キーポリシーの更新、作成、削除

  • ユーザー、ロール、およびグループからの IAM ポリシーのアタッチおよびデタッチ

  • KMS キーからの KMS キーポリシーのアタッチとデタッチ

KMS キー向けグラント

IAM ポリシーとキーポリシーに加えて、AWS KMS は各種グラント (権限付与) をサポートします。グラントは、アクセス許可付与のためのフレキシブルかつ強力な手法です。グラントを使用して、自 AWS アカウントまたは他の AWS アカウント内の IAM プリンシパルに対する時間制限付き KMS キーアクセスを発行できます。ポリシーの作成時にプリンシパルの名前がわからない場合、あるいはアクセスを必要とするプリンシパルが頻繁に変更される場合は、時間制限付きアクセスを発行することをお勧めします。グラント対象のプリンシパルは、KMS キーと同じアカウントにあっても、あるいは別のアカウントにあっても良いです。プリンシパルキーと KMS キーが異なるアカウントにある場合は、グラントに加えて IAM ポリシーを指定する必要があります。グラントを作成するには API を呼び出し、不要になったグラントを廃止または取り消す必要があるため、グラントには追加の管理が必要です。