

# IAM の一時委任
一時委任

## 概要:


一時委任は、Amazon および AWS パートナーの製品のオンボーディングに要する時間を短縮し管理を簡素化する機能で、AWS アカウントに組み込んで使用します。ユーザーは、複数の AWS サービスを手動で設定する代わりに、製品のプロバイダーに一時的なアクセス許可を制限付きで付与することで、プロバイダーが自動化されたデプロイワークフローを通じてセットアップ作業を数分で完了できるようにします。ユーザーは承認要件とアクセス許可の境界を使用して引き続き許可を管理しますが、プロバイダーのアクセス許可は、承認された期間が過ぎると自動的に無効化するため、手動でのクリーンアップは必要ありません。操作を継続して行えるよう製品に永続的なアクセス許可が必要な場合は、プロバイダーは一時委任を使用してアクセス許可の境界を持つ IAM ロールを作成し、このロールのアクセス許可の上限を定義します。製品プロバイダーのすべてのアクティビティは、コンプライアンスおよびセキュリティ上のモニタリングのため AWS CloudTrail を使って追跡されます。

**注記**  
一時委任のリクエストを作成できるのは、この機能のオンボーディングプロセスを完了している Amazon 製品パートナーおよび認定 AWS パートナーのみです。顧客はリクエストの確認と承認を行いますが、リクエストを自ら作成することはできません。IAM 一時委任をお使いの製品に統合したいとお考えの AWS パートナーの方は、オンボーディングと統合の手順に関する「[Partner Integration Guide](access_policies-temporary-delegation-partner-guide.md)」を参照してください。

## 一時委任の仕組み


一時委任の機能を使用すると、Amazon および AWS のパートナーは、お使いのアカウントへの、制限付きの一時的なアクセス許可をリクエストできます。リクエストが承認されると、パートナーは、委任されたアクセス許可を使用してユーザーに代わってさまざまなアクションを実行できます。委任のリクエストでは、製品プロバイダーが AWS アカウントにリソースをデプロイするかアカウントでリソースを設定する際に必要な、AWS サービスおよびアクションへの特定のアクセス許可を定義します。これらのアクセス許可は期間限定で利用でき、リクエストで指定された期間が過ぎると自動的に無効になります。

**注記**  
委任されたアクセス許可の有効期間は最大 12 時間です。ただし、ルートユーザーが承認できるのは有効期間が 4 時間以内の委任リクエストのみです。リクエストで 4 時間以上の時間が指定されている場合、ルートユーザー以外の ID を使用してリクエストを承認する必要があります。詳細については、「[Permission simulation beta capability](temporary-delegation-initiate-request.md#temporary-delegation-permission-simulation)」を参照してください。

Amazon S3 バケットからの読み取りなど継続して行われるタスクの場合は、委任リクエストに IAM ロールの作成を含めることができ、一時的な許可の有効期間が過ぎた後もリソースとアクションに引き続きアクセスできます。製品のプロバイダーは、一時委任と同時に作成した IAM ロールには、アクセス許可の境界をアタッチする必要があります。アクセス許可の境界は、IAM ロールのアクセス許可の上限を規定しますが独自にアクセス許可を付与することはできません。アクセス許可の境界は、承認前のリクエストの段階で確認することが可能です。詳細については「[アクセス許可の境界](access_policies_boundaries.md)」を参照してください。

このプロセスは次のように機能します。

1. Amazon または AWS パートナーの製品にログインし、お使いの AWS 環境に組み込みます。

1. 製品のプロバイダーがユーザーに代わって委任リクエストを実行すると、ユーザーは AWS マネジメントコンソールにリダイレクトされます。

1. ユーザーはリクエストされたアクセス許可を確認し、このリクエストを承認または拒否するか、もしくは管理者に転送するか、いずれかを判断します。

1. ユーザーまたはユーザーの管理者がリクエストを承認すると、製品プロバイダーは承認者の一時的な認証情報を取得して必要な作業を実行できます。

1. 製品プロバイダーのアクセス許可は、指定した期間が過ぎると自動的に無効になります。ただし、一時委任のリクエスト時に作成された IAM ロールはこの期間を過ぎた後も有効であるため、製品プロバイダーは引き続きリソースやアクションにアクセスして管理タスクを継続することができます。

![\[alt text not found\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/images/delegation-flow.png)


**注記**  
製品プロバイダーにアクセス許可を委任できるのは、ユーザーが、一時委任リクエストに含まれるサービスとアクションにアクセスできる場合のみです。リクエストされたサービスとアクションにユーザーがアクセスできない場合は、リクエストを承認しても製品プロバイダーにはアクセス許可が届きません。

アクセス許可のチェックに、成功する可能性が高い、と示された場合は、一時委任リクエストを承認してワークフローを先に進めることができます。

アクセス許可のチェックに、必要なアクセス許可がない可能性がある、と示された場合は、自分の管理者にリクエストを転送して承認を依頼します。管理者にこのリクエストを通知するときは、E メールやチケットなどご自身にとって望ましい方法を使用することが推奨されます。

管理者がリクエストを承認した場合、次の手順は製品プロバイダー側の設定に応じて変わってきます。
+ 製品プロバイダーが即時アクセスをリクエストした場合、プロバイダーには一時的なアクセス許可が自動的に届いてアクセス期間が始まります。
+ 製品プロバイダーが、所有者 (最初の受信者) にリリースをリクエストした場合は、ユーザーはアクセス許可の有効期間が始まる前にリクエストに戻って一時的なアカウントアクセスを明示的に共有する必要があります。製品プロバイダーは通常、このオプションを、必要なタスクを実行するために追加の入力 (リソースの選択や設定の詳細など) を必要とする場合に使用します。

# 一時委任をリクエストする


一時委任のリクエストが行えるのは、サポートされている Amazon または AWS パートナーの製品からのみです。一時委任をサポートしているワークフローの最中に、ユーザーは、必要な AWS リソースをユーザーのアカウントで設定するための一時的な制限付きアクセス許可を製品プロバイダーに付与するよう求められます。このように自動化されたアプローチをとることで、ユーザーが手動でリソースを設定する手間を省きより簡素化されたエクスペリエンスを実現しています。

委任リクエストの詳細、例えば製品プロバイダーが必要とする特定の IAM ロール、ポリシー、AWS サービスなどは、アクセスを許可する前に確認できます。ユーザーは、必要なアクセス許可を持っている場合はリクエストを自分で承認することもできますし、アカウント管理者にリクエストを転送して承認をもらうこともできます。製品プロバイダーのアクセス許可には時間制限があり、必要に応じてモニタリングしたり取り消したりすることができます。

**一時委任をリクエストするには**

1. AWS アカウントとの統合を必要としている、Amazon または AWS パートナーのサポートされている製品のコンソールを開きます。

1. *[IAM 一時委任を使用してデプロイ]* を選択します。この選択肢の表記はサポートされている製品によって異なる場合があります。詳細は、製品プロバイダーのドキュメントを参照してください。
**注記**  
AWS マネジメントコンソールにまだサインインしていなかった場合、AWS サインインページに新しいウィンドウが開きます。AWS アカウントにサインインしてから、製品コンソールから一時委任のリクエストを行うとよいでしょう。ご自身のユーザータイプとアクセスしようとしている AWS リソースに基づいてサインインする方法の詳細については、「[AWS サインインユーザーガイド](docs---aws.amazon.com.rproxy.govskope.casignin/latest/userguide/what-is-sign-in.html)」を参照してください。

1. リクエストの詳細を読み、製品プロバイダーの製品名と AWS アカウントを確認します。また、製品プロバイダーがユーザーに代わってアクションを実行する際に使用する AWS ID も確認します。

1. *[アクセスの詳細]* で、このリクエストを承認することにより一時的に委任されるアクセス許可の内容を確認します。
   + *[アクセス許可の概要]* には AI が生成した概要が記されており、アクセス可能な AWS サービスのカテゴリと、各サービスで実行できるアクションのタイプを理解するのに役立ちます。
   + *[JSON を表示]* を選択すると、製品プロバイダーが AWS アカウントにデプロイする必要のある特定のアクセス許可をアクセスの範囲やリソースの制限も含めて確認できます。
   + 製品プロバイダーが一時委任リクエストの一環として IAM ロールを作成する場合は、アクセス許可の境界をロールにアタッチする必要があります。この IAM ロールには、リクエストされたアクセス期間が過ぎた後もリソースとアクションにアクセスできる権限が含まれています。アクセス許可の境界を確認するには *[詳細を表示]* を選択します。アクセス許可の境界は、ロールに付与できるアクセス許可の上限を定義します。製品プロバイダーは、ロールの作成時に、実際のアクセス許可を定義する追加のポリシーをロールに適用します。これらのポリシーは、製品プロバイダーの定義方法に応じてアクセス許可の境界よりも焦点が狭く見えたり広く見えたりする場合があります。しかし、アクセス許可の境界を定義すれば、ロールの実際のアクセス許可は、ロールにアタッチされたポリシーに関係なく、リクエストの承認中に表示されるアクセス許可を超えることはありません。アクセス許可の境界の詳細については、「[アクセス許可の境界](access_policies_boundaries.md)」を参照してください

1. アクセス許可のシミュレーション結果を確認します。アクセス許可のシミュレーション機能では、自分の ID のアクセス許可が、リクエストに含まれるアクセス許可に対して自動評価されます。この分析に基づき、現在使用している ID でリクエストを承認するか、リクエストを管理者に転送するか、いずれかが推奨事項として表示されます。詳細については、「[アクセス許可のシミュレーション機能 – ベータ版](#temporary-delegation-permission-simulation)」を参照してください。

1. ダイアログで、次の手順を選択します。
   + 自分の ID に、製品プロバイダーに自分でオンボーディングを実行することを許可するための十分な権限がある場合は、*[アクセスを許可]* を選択します。これを選ぶと、アクセスを許可するとすぐに、製品プロバイダーのアクセス期間が開始します。
   + 自分の ID に、製品プロバイダーに自分でオンボーディングを実行することを許可するための十分な権限がない場合は、*[承認をリクエスト]* を選択します。次に、*[承認リクエストを作成]* を選択します。これを選ぶと、一時委任をリクエストするリンクが生成されてアカウント管理者に共有できます。管理者は AWS マネジメントコンソールにアクセスするか [一時委任リクエストを確認] のアクセスリンクを使用してリクエストを承認し、リクエストしたユーザーに一時的なアクセス許可を共有します。

**注記**  
製品プロバイダーにアクセスを許可するには、委任リクエスト (`AcceptDelegationRequest`) の受け付けと、交換トークン (`SendDelegatedToken`) の発行、という 2 つのアクションが必要になります。AWS マネジメントコンソールは、リクエストが承認されると両方のアクションを自動的に実行します。ユーザーが AWS CLI または API を使用している場合は、両方のアクションをユーザーが個別に実行する必要があります。

## アクセス許可のシミュレーション機能 – ベータ版


一時委任のリクエストを受け取ったら、ユーザーは自分で承認するか、アカウント管理者に転送して承認を受けるかのいずれかを実行できます。製品プロバイダーにアクセス許可を委任できるのは、ユーザーが、一時委任リクエストに含まれるサービスとアクションにアクセスできる場合のみです。ユーザーがリクエストされたサービスとアクションにアクセスできない場合、製品プロバイダーは、たとえリクエストに含まれていたとしてもそれらのアクセス許可を付与されません。

例えば、一時委任のリクエストに Amazon S3 バケットの作成、Amazon EC2 でのインスタンスの起動と停止、IAM ロールの割り当ての許可が含まれていたとします。このリクエストを承認する ID は、Amazon EC2 でのインスタンスの起動と停止、および IAM ロールの割り当ては行えますが、Amazon S3 バケットを作成する権限は持っていません。この ID がリクエストを承認した場合、製品プロバイダーは、これらのアクセス許可が一時委任のリクエストに含まれていたとしても、Amazon S3 バケットを作成することはできません。

委任できるアクセス許可はユーザーが既に所有している許可のみであるため、リクエストされたアクセス許可を自分が持っているかどうかを承認前に確認することが非常に重要です。アクセス許可のシミュレーション機能 (ベータ版) を使うと、自分が現在持っているアクセス許可とリクエストに含まれる許可とを比較して確認できます。そこで、現在使用している ID でリクエストを承認できるか、それとも管理者に転送する必要があるかが示されます。この分析で、ユーザーに必要なアクセス許可があることを確認できない場合、リクエストは承認のため管理者に転送されます。この評価はシミュレーションされたアクセス許可の分析に基づくもので、実際の AWS 環境とは異なる可能性もあるため、リクエストされたアクセス許可を慎重に確認してから先に進みます。

## 次のステップ


一時委任のリクエストを行ったら、リクエストのプロセス全体を管理およびモニタリングできます。一時的なアクセス許可の追跡、承認、管理には、次の手順が役立ちます。
+ [一時委任リクエストの確認](temporary-delegation-review-requests.md) – アクセス許可のリクエストのステータスを監視したり、リクエストの詳細情報を確認して一時委任リクエストを承認または拒否します。
+ [一時委任アクセス許可の取り消し](temporary-delegation-revoke-access.md) – 有効な一時委任セッションを、設定された有効期限前に終了する際に使用します。

# 一時委任リクエストの確認


一時委任リクエストが発行されると、ユーザーは IAM コンソールからリクエストをモニタリング、承認、拒否することができます。一時委任リクエストのページには、承認待ち、完了、拒否のものを含め、すべてのリクエストが一元的に表示されます。ユーザーは、管理者としてこれらのリクエストを確認し、組織のセキュリティポリシー、ビジネス要件、コンプライアンス標準に基づいて、製品プロバイダーに AWS リソースへのアクセスを許可したり拒否したりできます。この画面は、製品プロバイダーのアクセス許可のライフサイクルを追跡したり、一時的なアクセス許可を継続的に監視したりするのに役立ちます。

**注記**  
一時委任リクエストを承認する人は、iam:AcceptDelegationRequest のアクセス許可を持っている必要があります。

**一時委任リクエストを承認するには**

1. 次のページから AWS マネジメントコンソールにサインインし、IAM コンソールを開きます。https://console.aws.amazon.com/iam/

1. 左側のナビゲーションペインで、*[一時委任リクエスト]* を選択します。

1. メインページに一時委任リクエストの一覧が以下の情報と共に表示されます。
   + *リクエスト ID:* – リクエストの一意の ID
   + *ステータス* – 最新のステータス (承認待ち、承認済み、拒否、共有済み、期限切れ)
   + *リクエストしたユーザー* – リクエストに関連付けられた製品プロバイダー
   + *によって開始されました* – 製品プロバイダーのリクエストを開始したアカウントの IAM プリンシパル
   + *リクエストが作成されました* – リクエストが送信された日時
   + *リクエストの有効期限* – リクエストの有効期限が切れた/切れる日時

1. (オプション) フィルターを使用してリクエストをステータス別に表示します。
   + *すべてのリクエスト* – ステータスに関係なくすべてのリクエストを表示します。
   + *承認待ち* – 管理者の承認を待っているリクエストが表示されます
   + *承認済み* – 承認済みのリクエストが表示されます
   + *共有済み* – アクセス許可が共有されたリクエストが表示されます
   + *拒否* – 拒否されたリクエストが拒否の理由とともに表示されます

1. 特定のリクエストに関する詳細情報を表示したり、承認待ちのリクエストを確認したりするときは、リクエスト ID を選択します。

1. リクエストの詳細を確認します。
   + 製品プロバイダーの情報
   + リクエストが行われた理由および根拠
   + リクエストされた期間
   + リクエストされた AWS のアクセス許可

1. 管理者として承認待ちのリクエストを確認する場合は、次のうちいずれか 1 つを選択します。
   + リクエストを承認するときは、*[承認]* を選択します。承認ダイアログで、アクセス許可のシミュレーションの結果を確認できます。詳細については、「[アクセス許可のシミュレーション機能 – ベータ版](temporary-delegation-initiate-request.md#temporary-delegation-permission-simulation)」を参照してください。アクセス期間と自分の AWS ID を確認したら、*[承認]* を選択してアクセスを許可します。製品プロバイダーが即時アクセスをリクエストした場合、プロバイダーには一時的なアクセス許可が自動的に届いてアクセス期間が始まります。それ以外の場合は、リクエストしたユーザーに、アクセス許可が製品プロバイダーにリリースされたことを知らせる通知が届きます。
   + リクエストを拒否するときは *[拒否]* を選択します。
     + 拒否のダイアログに、リクエストしたユーザーが拒否された理由を理解できるよう、明確に理由を入力します。
     + *[拒否]* を選択し、アクセスを拒否します。

1. リクエストの一覧は自動的に更新され、最新のステータス情報が表示されます。ページを手動で更新して、ステータスの最新情報を確認することもできます。

# 一時委任アクセスの取り消し


製品プロバイダーのアクセスセッションは、承認された期間を過ぎると自動的に期限が切れるように設計されていますが、場合によってはアクセスを直ちに終了しなければならないことがあります。セキュリティ上の懸念が生じたとき、製品プロバイダーの作業が早期に完了したとき、ビジネス要件が変化したときに、製品プロバイダーのアクティブなアクセス許可を取り消すと、緊急制御のメカニズムが発動します。アクセス許可は、セキュリティおよびオペレーション上の制御を維持するため、リクエストしたユーザーと管理者の双方が取り消せるようになっています。

**一時委任アクセスを取り消すには**

1. 次のページから AWS マネジメントコンソールにサインインし、IAM コンソールを開きます。https://console.aws.amazon.com/iam/

1. 左側のナビゲーションペインで、*[一時委任リクエスト]* を選択します。

1. 取り消すアクセスセッションのリクエスト ID を特定します。

1. *[アクション]* を選択し、*[アクセスを取り消す]* を選択します。

1. ダイアログで、*[アクセスを取り消す]* を選択し、アクセスセッションを直ちに終了することを確定します。

アクセスを取り消すと、製品プロバイダーはユーザーの AWS リソースにアクセスできなくなります。取り消しは、監査上の目的で AWS CloudTrail に記録されます。

**重要**  
アクセスを取り消すと、製品プロバイダーのアクセスセッションは直ちに終了します。そのアクセスを使用している進行中の作業またはプロセスは、中断されます。取り消しによって重要なオペレーションが中断されることのないようにしてください。

**注記**  
ルートユーザーを使用して承認されたリクエストは、アクセスを取り消すことができません。AWS では、委任リクエストの承認にルートユーザーを使用しないことを推奨しています。代わりに適切なアクセス許可を持つ IAM ロールを使用してください。

## 委任リクエストのアクセス許可の管理


管理者は、IAM プリンシパルに、製品プロバイダーからの委任リクエストを管理するためのアクセス許可を付与できます。これは、組織内の特定のユーザーまたはチームに承認権限を委任する場合や、委任リクエストに対して特定のアクションを実行できる人を管理する必要がある場合に有用です。

委任リクエストの管理には、次の IAM アクセス許可を使用できます。


| アクセス許可 | 説明 | 
| --- | --- | 
| iam:AssociateDelegationRequest | 割り当てられていない委任リクエストを AWS アカウントに関連付ける | 
| iam:GetDelegationRequest | 委任リクエストの詳細を表示する | 
| iam:UpdateDelegationRequest | 委任リクエストを管理者に転送して承認をもらう | 
| iam:AcceptDelegationRequest | 委任リクエストを承認する | 
| iam:SendDelegationToken | 承認後に交換トークンを製品プロバイダーに発行する | 
| iam:RejectDelegationRequest | 委任リクエストを拒否する | 
| iam:ListDelegationRequests | アカウントの委任リクエストを一覧表示する | 

**注記**  
デフォルトでは、委任リクエストを作成した IAM プリンシパルには、そのリクエストを管理するためのアクセス許可が自動で付与されます。プリンシパルは、リクエストを自分のアカウントに関連付ける、リクエストの詳細を表示する、リクエストを拒否する、管理者に転送して承認をもらう、管理者の承認後に交換トークンを製品プロバイダーに発行する、所有する委任リクエストを一覧表示する、といったことが行えます。

# 通知


IAM の一時委任は AWS User Notifications に組み込まれた機能で、委任リクエストのステータス変更に関する最新情報を確認できます。通知は、委任リクエストを確認して承認する必要がある管理者にとってとりわけ有用です。

AWS User Notifications を使用すると、E メール、Amazon Simple Notification Service (SNS)、AWS Chatbot for Slack または Microsoft Teams、AWS コンソールモバイルアプリケーションなど複数のチャネルを介してアラートを配信するように設定できます。承認待ちにすばやく対応したりアクセス許可の変更に気づいたりすることが可能になり、適切なユーザーに適切なタイミングで通知できます。また、組織のニーズやセキュリティ要件に基づいて通知を行うイベントをカスタマイズすることもできます。

## 利用可能な通知イベント


ユーザーが通知の受け取りをサブスクライブできる IAM 一時委任イベントは、以下のイベントです。
+ IAM 一時委任リクエストが作成されました
+ IAM 一時委任リクエストが割り当てられました
+ IAM 一時委任リクエストは承認待ちです
+ IAM 一時委任リクエストが拒否されました
+ IAM 一時委任リクエストが承諾されました
+ IAM 一時委任リクエストが完了しました
+ IAM 一時委任リクエストの有効期限が切れました

## 通知の設定


IAM 一時委任イベントの通知を設定するには

1. AWS User Notifications コンソールを開きます

1. 通知設定を作成または更新します

1. AWS IAM をサービスとして選択します

1. 通知を希望する委任リクエストイベントを選択します

1. 配信チャネル (E メール、AWSチャットボットなど) を設定します

AWS User Notifications の設定 (配信チャネルの設定、通知ルールの管理など) に関する詳しい手順は、AWS User Notifications のドキュメントを参照してください。

# CloudTrail


製品プロバイダーが、一時的に委任されたアクセス許可を使って実行したアクションは、すべて AWS CloudTrail に自動記録されます。つまり、AWS アカウントにおける製品プロバイダーのアクティビティは、すべて可視化され監査できるようになっています。製品プロバイダーが実行したアクション、実行日時、実行したアカウントの特定が可能です。

ユーザーの IAM プリンシパルが実行したアクションと、委任されたアクセス許可を持つ製品プロバイダーが実行したアクションとを区別しやすくするため、CloudTrail イベントの `userIdentity` エレメントに、新たに `invokedByDelegate` というフィールドが追加されました。このフィールドに製品プロバイダーの AWS アカウント ID が表示されるため、委任されたアクセス許可によるアクションの、フィルタリングと監査が簡単に行えます。

## CloudTrail イベントの構造


製品プロバイダーが、一時的に委任されたアクセス許可を使用して実行したアクションの、CloudTrail イベントの例を以下に示します。

```
{
    "eventVersion": "1.09",		 	 	 
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AIDACKCEVSQ6C2EXAMPLE:Role-Session-Name",
        "arn": "arn:aws:sts::111122223333:assumed-role/Role-Name/Role-Session-Name",
        "accountId": "111122223333",
        "accessKeyId": "[REDACTED:AWS_ACCESS_KEY]",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AIDACKCEVSQ6C2EXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin"
            },
            "attributes": {
                "creationDate": "2024-09-09T17:50:16Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedByDelegate": {
            "accountId": "444455556666"
        }
    },
    "eventTime": "2024-09-09T17:51:44Z",
    "eventSource": "iam.amazonaws.com",
    "eventName": "GetUserPolicy",
    "awsRegion": "us-east-1",
    "requestParameters": {
        "userName": "ExampleIAMUserName",
        "policyName": "ExamplePolicyName"
    },
    "eventType": "AwsApiCall",
    "recipientAccountId": "111122223333"
}
```

`invokedByDelegate` フィールドには、委任されたアクセス許可を使用してアクションを実行した製品プロバイダーの AWS アカウント ID が記されています。こちらの例では、アカウント 444455556666 (製品プロバイダー) が、アカウント 111122223333 (顧客アカウント) でアクションを実行しています。