View a markdown version of this page

での許可 AWS KMS - AWS Key Management Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

での許可 AWS KMS

グラントは、プリンAWS シパルまたは AWS サービスプリンシパルが暗号化オペレーションで KMS キーを使用できるようにするポリシー手段です。また、KMS キー (DescribeKey) を表示して、グラントの作成、管理をできるようにします。KMS キーへのアクセスを認可する際、グラントはキーポリシーおよび IAM ポリシーと共に考慮されます。グラントは、作成してそのアクセス許可を使用し、キーポリシーまたは IAM ポリシーを変更することなく削除できるため、一時的なアクセス許可としてよく使用されます。

グラントは、 と統合して保管中のデータを暗号化 AWS KMS する AWS サービスで一般的に使用されます。サービスは、アカウント内のユーザーの代わりにグラントを作成し、そのアクセス許可を使用して、タスクが完了するとすぐにグラント廃止にします。 AWS サービス、グラントの使用方法の詳細については、サービスのユーザーガイドまたはデベロッパーガイドの保管時の暗号化トピックを参照してください。

権限は、きわめて柔軟で便利なアクセス制御メカニズムです。KMS キーのグラントを作成すると、このグラントは、グラントで指定されたすべての条件が満たされている場合に限り、被付与者プリンシパルが指定されたグラントオペレーションを KMS キーで呼び出すことを許可します。

  • 各グラントでは、正確に 1 つの KMS キーにアクセスできます。異なる AWS アカウントでKMS キーのグラントを作成できます。

  • グラントは KMS キーへのアクセスを許可できますが、アクセスを拒否することはできません。

  • 各権限には 1 AWS 人の被付与者があり、被付与者プリンシパル (IAM ID) または被付与者サービスプリンシパル (サービスプリンシパル) AWS のいずれかになります。GranteePrincipal または GranteeServicePrincipal のパラメータを指定する必要があります。両方を指定することはできません。

  • グラントは、グラントオペレーションのみを許可することができます。グラントオペレーションは、グラントの KMS キーによってサポートされている必要があります。サポートされていないオペレーションを指定すると、ValidationError の例外により、CreateGrant リクエストは失敗します。

  • 被付与者プリンシパルは、アクセス許可がキーポリシーまたは IAM ポリシーから付与された場合と同様に、グラントを指定せずに付与されたアクセス許可を使用できます。ただし、 AWS KMS API は結果整合性モデルに従うため、許可を作成、廃止、または取り消すと、変更が全体で利用可能になるまでに少し時間がかかる場合があります AWS KMS。権限でアクセス許可をすぐに使用するには、権限トークンを使用します

  • 認可されたプリンシパルはグラントを削除できます (グラントの廃止または失効)。グラントを削除すると、グラントが許可したすべてのアクセス許可が削除されます。グラントを取り消すために追加または削除するポリシーを特定する必要はありません。

  • AWS KMS は、各 KMS キーに対する許可の数を制限します。詳細については、「KMS キーあたりのグラント: 50,000」を参照してください。

グラントを作成するとき、およびグラントを作成する許可を他のユーザーに付与するときは注意が必要です。グラントを作成する許可にはセキュリティ上の影響があります。これは、kms:PutKeyPolicy 許可でポリシーを設定する場合と似ています。

  • KMS キー (kms:CreateGrant) の許可を作成する権限を持つユーザーは、許可を使用して、 AWS サービスを含むユーザーとロールに KMS キーの使用を許可できます。プリンシパルは、独自の ID AWS アカウント でも、別のアカウントまたは組織の ID でもかまいません。

  • 許可は、 AWS KMS オペレーションのサブセットのみを許可できます。グラントを使用して、プリンシパルに KMS キーの表示、暗号化オペレーションでの使用、グラントの作成、グラントの廃止を許可できます。詳細については、Grant operations を参照してください。権限の制約を使用して、権限でアクセス許可を制限することもできます。

  • プリンシパルはアクセス許可を取得して、キーポリシーまたは IAM ポリシーから権限を作成できます。ポリシーから kms:CreateGrant アクセス許可を取得したプリンシパルは、KMS キーの任意の付与オペレーションの許可を作成できます。これらのプリンシパルは、キーに対して付与している許可を持っている必要はありません。ポリシーで kms:CreateGrant アクセス許可を許可する場合は、ポリシー条件を使用してこの許可を制限します。

  • プリンシパルは、グラントからグラントを作成する許可を取得することもできます。これらのプリンシパルは、何らかのポリシーからの他のアクセス許可を持っている場合でも、グラントを受けたアクセス許可のみを委任することができます。詳細については、「CreateGrant アクセス許可の付与」を参照してください。

グラントの概念

グラントを効果的に使用するには、 AWS KMS が使用する用語と概念を理解する必要があります。

グラントの制約

grant のアクセス許可を制限する条件。 は 2 種類のグラント制約 AWS KMS をサポートします。

  • 暗号化コンテキストの制約 — 暗号化オペレーションのリクエストに含まれる暗号化コンテキストに基づいてアクセス許可を制限します。この制約は、対称暗号化 KMS キーでのみ機能します。

  • SourceArn 制約 — 特定の AWS リソースに代わって行われたリクエストへのアクセス許可の付与を制限します。これにより、aws:SourceArnグローバル条件キーがグラントに効果的に配置されます。この制約は、すべてのタイプの KMS キーで機能します。

詳細については、「グラントの制約の使用」を参照してください。

グラント ID

KMS キーのグラントの一意の識別子。キー識別子と共にグラント ID を使用し、RetireGrant または RevokeGrant リクエストでグラントを識別できます。

グラントオペレーション

許可で許可できる AWS KMS オペレーション。他のオペレーションを指定した場合、ValidationError の例外により、CreateGrant リクエストは失敗します。これらは、グラントトークンを承認するオペレーションでもあります。これらのアクセス許可の詳細については、AWS KMS アクセス許可 を参照してください。

これらのグラントオペレーションは、オペレーションを使用するアクセス許可を表します。したがって、ReEncrypt オペレーションの場合、ReEncryptFromReEncryptTo、または両方の ReEncrypt* を指定できます。

グラントオペレーション:

許可するグラントオペレーションは、許可の KMS キーでサポートされている必要があります。サポートされていないオペレーションを指定すると、ValidationError の例外により、CreateGrant リクエストは失敗します。例えば、対称暗号化 KMS キーのグラントは、SignVerifyGenerateMac または VerifyMac オペレーションを許可できません。非対称 KMS キーのグラントは、データキーまたはデータキーペアを生成するいかなるオペレーションも許可できません。

グラントトークン

AWS KMS API は結果整合性モデルに従います。グラントを作成すると、変更が AWS KMS全体に適用されるまでに若干の遅延が生じることがあります。通常、変更がシステム全体に反映されるまでに数秒もかかりませんが、場合によっては数分かかることがあります。グラントがシステム全体に完全に伝播される前に使用しようとすると、アクセス拒否エラーが発生することがあります。グラントトークンを使用すると、グラントを参照し、グラントのアクセス許可をすぐに使用できます。

グラントトークンは、一意、非シークレット、可変長、base64 エンコードの、グラントを表す文字列です。グラントトークンを使用して、任意のグラントオペレーションでグラントを識別できます。ただし、トークン値はハッシュダイジェストであるため、グラントの詳細は明らかになりません。

グラントトークンは、グラントが  AWS KMS 全体に完全に伝播されるまでにのみ使用されるように設計されています。その後、被付与者プリンシパルは、グラントトークンやその他のグラント限の証拠を提供することなく、グラントでアクセス許可を使用することができます。グラントトークンはいつでも使用できますが、グラントが最終的に一貫していると、 はグラントトークンではなくグラント AWS KMS を使用してアクセス許可を決定します。

例えば、次のコマンドでは、GenerateDataKey オペレーションを呼び出します。これは、グラントトークンを使用して、発信者 (被付与者プリンシパル) に、指定した KMS キーで GenerateDataKey を呼び出す許可を付与します。

$ aws kms generate-data-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --key-spec AES_256 \ --grant-token $token

また、グラントトークンを使用して、グラントを管理するオペレーションでグラントを識別することもできます。例えば、廃止プリンシパルは、RetireGrant オペレーションの呼び出し時に、グラントトークンを使用できます。

$ aws kms retire-grant \ --grant-token $token

CreateGrant は、グラントトークンを返す唯一のオペレーションです。CreateGrant AWS KMS オペレーションの他のオペレーションまたは CloudTrail ログイベントからグラントトークンを取得することはできません。ListGrants および ListRetirableGrants オペレーションは、グラントトークンではなくグラント ID を返します。

詳細については、「グラントトークンを使用する」を参照してください。

被付与者プリンシパル

グラントで指定されたアクセス許可を取得する AWS プリンシパル (IAM ID)。

被付与者プリンシパルは、 AWS アカウント (ルート)、IAM ユーザーIAM ロール、フェデレーティッドロールまたはユーザー、引き受けたロールユーザーなど、任意のプリン AWS シパルにすることができます。被付与者プリンシパルは、KMS キーと同じアカウントか、別のアカウントにすることができます。ただし、被付与者プリンシパルを、サービスプリンシパルIAM グループAWS 組織にすることはできません。

被付与者プリンシパルを指定するには、CreateGrant リクエストで GranteePrincipalパラメータを使用します。

注記

IAM ベストプラクティスでは、長期の認証情報を持つ IAM ユーザーの使用は推奨されていません。可能な限り、一時的な認証情報を提供する IAM ロールを使用してください。詳細については、「IAM ユーザーガイド」の「IAM でのセキュリティのベストプラクティス」を参照してください。

被付与者サービスプリンシパル

グラントで指定されたアクセス許可を取得する AWS サービスプリンシパル。被付与者サービスプリンシパルを指定するには、CreateGrant リクエストで GranteeServicePrincipalパラメータを使用します。

を使用して許可を作成するときはGranteeServicePrincipal、 も含める必要がありますSourceArn grant constraint。このSourceArn制約により、サービスプリンシパルは、指定された AWS リソースに代わってリクエストが行われた場合にのみ KMS キーを使用できます。

を指定するときはGranteeServicePrincipalRetiringPrincipalまたは も指定する必要がありますRetiringServicePrincipal

注記

GranteePrincipal または GranteeServicePrincipal のパラメータを指定する必要があります。両方を指定することはできません。

(グラント) を廃止にする

グラントを終了します。アクセス許可の使用が終了したら、グラントを廃止にします。

グラントの取り消しと使用停止のどちらも、グラント限を削除します。ただし、使用停止はグラントで指定されたプリンシパルによって行われます。通常、取り消しはキー管理者が行います。詳細については、「グラントの使用停止と取り消し」を参照してください。

プリンシパルを使用停止にする

グラントを廃止にするプリンシパル。グラントで使用停止プリンシパルを指定できますが、必須ではありません。廃止するプリンシパルは、IAM ユーザー AWS アカウント、IAM ロール、フェデレーティッドユーザー、引き受けたロールユーザーなど、任意のプリンシ AWS パルにすることができます。使用停止プリンシパルは、KMS キーと同じアカウントか、別のアカウントにすることができます。

廃止プリンシパルを指定するには、CreateGrant リクエストで RetiringPrincipalパラメータを使用します。

注記

IAM ベストプラクティスでは、長期の認証情報を持つ IAM ユーザーの使用は推奨されていません。可能な限り、一時的な認証情報を提供する IAM ロールを使用してください。詳細については、「IAM ユーザーガイド」の「IAM でのセキュリティのベストプラクティス」を参照してください。

サービスプリンシパルの廃止

許可を廃止するアクセス許可を持つ AWS サービスプリンシパル。廃止するサービスプリンシパルを指定するには、CreateGrant リクエストで RetiringServicePrincipalパラメータを使用します。

注記

RetiringPrincipal または RetiringServicePrincipal を指定できます。両方を指定することはできません。

許可を廃止できるユーザーの詳細については、「」を参照してくださいグラントの使用停止と取り消し

(グラント) を取り消す

グラントを終了します。グラントを取り消して、グラントが許可するアクセス許可をアクティブに拒否します。

権限の取り消しと使用停止のどちらも、権限を削除します。ただし、使用停止はグラントで指定されたプリンシパルによって行われます。通常、取り消しはキー管理者が行います。詳細については、「グラントの使用停止と取り消し」を参照してください。

結果整合性 (グラント用)

AWS KMS API は結果整合性モデルに従います。グラントの作成、廃止、または取り消しを行うと、変更が AWS KMS全体に適用されるまでに若干の遅延が生じることがあります。通常、変更がシステム全体に反映されるまでに数秒もかかりませんが、場合によっては数分かかることがあります。

想定外のエラーが発生する場合は、この短い遅延に注意する必要があります。たとえば、新しい権限を管理しようとする場合や、権限が全体で認識される前に新しい権限で権限を使用しようとすると AWS KMS、アクセス拒否エラーが発生する可能性があります。グラントを廃止にするか取り消す場合でも、被付与者プリンシパルは、グラントが完全に削除されるまで、そのアクセス許可を短い期間使用できる可能性があります。一般的な戦略はリクエストを再試行することであり、一部の AWS SDKs には自動バックオフと再試行ロジックが含まれています。

AWS KMS には、この短い遅延を軽減する機能があります。

注記

サービスのすべてのエンドポイントが新しいグラント状態で更新されるまで、グラントトークンはグラントの有効性を優先します。ほとんどの場合、結果整合性は 5 分以内に取得されます。

詳細については、「AWS KMS  の結果整合性」を参照してください。