1. ホーム
  2. amazon-web-services

[解決済み] AWSのロールを "アサイン "するとはどういうことですか?

2022-03-02 20:11:01

質問

質問

AWSにおけるAssume"の意味と、その定義は?

背景

役割を想定して が頻繁に使用され、その定義と実際の意味を理解しようとしている。

プリンシパル(IAMユーザー、EC2インスタンスで動作するアプリケーションなど、AWSリソースにアクセスするためのアクションを呼び出すもの)が、AWSリソースにアクセスするためのアクションを呼び出す必要がある場合だと思います。

  1. AWS (API? or some Authorisation runtime in AWS?) は、プリンシパルに付与できるロールを特定する。
    例)EC2ユーザーがassume-role APIコールを実行し、IAMプロファイルが設定されたEC2インスタンス内のAWSリソースにアクセスするアプリケーションを実行するよう指定した場合。

    • EC2 IAMプロファイルに含まれるすべてのIAMロール
    • assume-roleコールで要求されたIAMロールとポリシー
    • EC2ユーザーに付与されるIAMロール
  2. AWSは、原則がリソース上でアクションを行うことを許可するポリシー(アクション、リソース)を持つロールを、ロールから見つけます。

  3. AWSは、原則のロールを特定されたロールに切り替えます。

ステップ3が完了すると、quot;the principal has assumed the role"と表示されます。これは正しいのでしょうか?

研究

IAMロールの使用

IAMユーザー、アプリケーション、またはサービスが、作成したロールを使用する前に、ロールに切り替えるための権限を付与する必要があります。IAMユーザーのグループまたはユーザー自身に関連付けられたポリシーを使用して、必要なパーミッションを付与することができます。

解決するには?

ロールを引き受けるとは、Security Token Service(STS)に、引き受けたいロールに固有の一時的な認証情報(ロール認証情報)のセットを提供してもらうことを意味します。 (具体的には、そのロールを持つ新しいセッションです)。

このリクエストには、オプションでポリシーを含めることができます。このポリシーは、一時的な資格情報の許可を、ロールのポリシーで許可されたもののサブセットのみに制限する役割を果たします。

その後、この資格情報を使って、さらにリクエストを行う。 これらの認証情報は、access-key-id と secret を持つ IAM ユーザー認証情報に似ていますが、アクセスキーは ASIA の代わりに AKIA そして、セキュリティ・トークンと呼ばれる3番目の要素があり、これは一時的な資格情報で署名されたリクエストに含まれなければなりません。

これらの一時的な資格情報を使ってリクエストを行うと、新しいIDを取得したことになるので、ロールに関連する権限を持ち、自分自身の権限(持っている場合)は持ちません。 CloudTrail を使用して、ロールの資格情報を、そのロールを引き受けたユーザーまでさかのぼることができますが、そうでなければ、サービスは誰が資格情報を使用しているのかを認識することはできません。

tl;dr: ロールを引き受けることは、ロールを引き受けたエンティティではなく、ロールに関連付けられた一時的なクレデンシャルのセットを取得することを意味します。

<ブロッククオート

AWS (API? or some Authorisation runtime in AWS?) は、プリンシパルに付与できるロールを特定します。

いいえ、あなたが希望するロールを指定します。

EC2インスタンス上で動作するコードで、インスタンスがインスタンスロールを持っている場合、EC2インフラストラクチャは実際にインスタンスの代わりにassume-roleを呼び出し、一時的なクレデンシャルを インスタンスメタデータサービス . これらの資格情報は、インスタンス内からのみアクセス可能で、インスタンス上には保存されません。

Lambda関数を実行する際、LambdaインフラストラクチャはSTSに連絡し、一時的な認証情報を 環境変数 . 繰り返しになりますが、これらの認証情報は関数内部に保存されることなく、関数からアクセス可能です。

どちらの場合でも、これらの資格情報を使ってassume roleを呼び出し、別のロールを仮定することができますが、ほとんどの環境ではその必要はないはずです。

<ブロッククオート

例)EC2ユーザーがassume-role APIコールを実行し、IAMプロファイルが設定されたEC2インスタンス内のAWSリソースにアクセスするアプリケーションを実行するよう指定した場合。

AWSはEC2を意識していない ユーザー . インスタンスのロールは、インスタンス上で実行されているすべてのものからアクセス可能です。

EC2 IAMプロファイルのすべてのIAMロール

インスタンスプロファイルは1つのロールを含むことができます .

assume-roleの呼び出しで要求されたIAMロールとポリシー

正確に1つのロールを引き受けることを要求しています。 ポリシーを要求する必要はありません -- ポリシーを指定するのは、一時的なクレデンシャルに 少ない の権限は、ロールの資格情報によって許可されるよりも低い。 これは、ブラウザやアプリのコードなど、信頼されていない場所で実行されているコードが、クレデンシャルでリクエストに署名できる必要がある場合に行うことかもしれません。

<ブロッククオート

AWSは、原則がリソース上でアクションを行うことを許可するポリシー(アクション、リソース)を持っているロールを、ロールから見つけます。

いいえ、上記の通り、assume-roleを呼び出す際に特定のロールを要求します。

AWSは、特定された役割に原則の役割を切り替えます。

いいえ。 あなた は、提供された一時的な認証情報を使用して、切り替えを行います。