[解決済み] AWSでロールを引き受ける際のRoleSessionNameのユースケースとパフォーマンスへの影響について
質問内容
私は、あるアカウント内のリソースに、AWSの別のアカウントからコードでアクセスしたい(クロスアカウントアクセス)というシナリオがあります。そして、私はこのアクセスをNodeJsを使用して、ラムダ関数として実装され、またEC2上で長時間実行されるコードとして実装したいと思います。
この方法をネットで読んでみると、以下の方法で生成された一時的なクレデンシャルが必要であることがわかります。
aws.STS
こんな感じです。
const AWS = require('aws-sdk');
const sts = new AWS.STS();
const stsResults = await sts.assumeRole({
RoleArn: 'arn:aws:iam::111111111111:role/role_name',
RoleSessionName: 'STRING_VALUE',
}).promise();
const dynamodb = new AWS.DynamoDB({
region: 'us-east-1',
accessKeyId: stsResults.Credentials.AccessKeyId,
secretAccessKey:stsResults.Credentials.SecretAccessKey,
sessionToken: stsResults.Credentials.SessionToken
});
について質問です。
RoleSessionName
属性は必須です。この属性が何をするのか、どのように使用すればよいのか、理解するのに苦労しています。以下はその例です。
AWSのドキュメント
には、それについて書かれています。
RoleSessionName - (String) 想定されるロールセッションの識別子です。
ロールセッション名を使用することで、同じ ロールが異なるプリンシパルによって、あるいは異なる理由で引き受けられた場合。での クロスアカウントシナリオでは、ロールセッション名は可視化され ロールを所有するアカウントによってログに記録されます。ロールセッション名は また、想定されるロールプリンシパルのARNにも使用される。つまり その後の一時的なセキュリティを使用したクロスアカウントAPIリクエストでは の認証情報は、外部アカウントにロールセッション名を公開することになります。 をAWS CloudTrailのログに記録する。
このパラメータを検証するために使用される正規表現は、以下の文字列です。 大文字と小文字の英数字で構成され、文字数は0です。 スペース。また、アンダースコアや次のいずれかを含めることができます。 文字: =,.@-
個人的には、両方のアカウントが同じ会社の所有であり、複数のアカウントを持つ理由はリソースを論理的に分離するためだけなので、セキュリティについては心配はしていません。私が知りたいのは、この属性が
assumeRole
関数を呼び出すことができます。同じ
RoleSessionName
は、すべてのラムダ関数に使用できますか?新しいセッションを作成するたびに、ランダムなIDを作成する必要がありますか?
どのように解決するのですか?
引用したドキュメントの通りです。
<ブロッククオート同じロールを異なるプリンシパルや異なる理由で引き受けた場合、セッションを一意に識別するためにロールセッション名を使用します。
IAM Roleがあり、それがあるプログラムによって引き受けられるとします。これは、AWSのサービスにアクセスするために使用できる一時的な資格情報のセットを返します。
監査証跡では、Roleによって行われたことはすべて、(Roleを引き受けたエンティティではなく)Roleによって行われたこととして追跡されることになります。このため、APIコールの発信元を追跡することは困難です。なぜなら、Roleは「異なる主体または異なる理由」によって引き受けられる可能性があるからです。例えば、複数のプログラムがそのロールを使用する可能性があります。
このようなリクエストの「起源」をたどるのを支援するために
RoleSessionName
は、特定の仮定を識別するために提供されます。これは、どのアプリがクレデンシャルを使用しているかを特定するのに役立ちます。
関連
-
[解決済み】あなたのWSGIPathは、存在しないファイルを参照しています。
-
[解決済み] CloudFormation Stack Errors with REST API Doesn't Contain Any Methods
-
[解決済み] AWS KinesisとEventBridgeの違いは何ですか?
-
[解決済み] CloudFrontがオリジンに接続できなかった
-
[解決済み] AWSストレージクラス解析とインテリジェントティアリングの比較
-
[解決済み] Amazon S3におけるHeadBucket操作とは
-
[解決済み] AWSです。CloudFormationのテンプレートでbooleanパラメータを指定する方法
-
[解決済み] AWS CLIでワイルドカードを使用してファイル群を`cp`するにはどうすればよいですか。
-
[解決済み] AWS - Disconnected : サポートされている認証方法がありません (サーバーは :publickey を送信)
-
[解決済み】Amazon EC2とAWS Elastic Beanstalkの違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】AWS CLI S3 HeadObject操作の呼び出し時に、クライアントエラー(403)が発生しました。Forbidden
-
[解決済み] Amazon SQSを複数のコンシューマで使用する
-
[解決済み] AWS S3 Bucketの名前を変更する方法
-
[解決済み] MSCK REPAIR TABLEは裏で何をしているのか、なぜこんなに遅いのか?
-
[解決済み] amazon cloudfront と amazon s3 transfer acceleration の違いは何ですか?
-
[解決済み] アクセスポイントを経由してAmazon S3へのロールを認可する
-
[解決済み] AWSとPuTTy。悪いサービス要求のssh-connection [閉鎖]。
-
[解決済み] AWS cli: not authorized to perform: sts:AssumeRole on resource.
-
[解決済み】LightsailとEC2の違いは何ですか?[クローズド]
-
[解決済み】FilezillaとSFTPを使用してAmazon EC2のファイルディレクトリに接続する。