AWS スイッチロールとは
AWS スイッチロールは、AWS IAM が提供するアクセス権限の切り替え機能です。
AWS マネジメントコンソールでアクセス権限があるユーザーは、スイッチロールを使用して、異なる AWS アカウントまたは異なる IAM ユーザーに切り替えることができます。
今回やりたいこと
今回はWindows powershellを使って、スイチロールを試してみます。
作業ステップ
1.EC2用ロールを作成
EC2の参照権限のみのロールを作成し、EC2にアタッチする
2.スイチ先のロールを作成
スイチ先のロールにS3の参照権限を設定して、信頼ポリシーに上記作成のec2-test-roleのARNを記載する
3.下記のソースより実行してみる
先ず、スイチロールをしなくて、現在のS3 Bucket一覧を取得して見る。
権限なし、で回答しました。
PS C:\Windows\system32> Get-S3Bucket
Get-S3Bucket : Access Denied
At line:1 char:1
+ Get-S3Bucket
+ ~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Amazon.PowerShe...tS3BucketCmdlet:GetS3BucketCmdlet) [Get-S3Bucket], InvalidOperationException
+ FullyQualifiedErrorId : Amazon.S3.AmazonS3Exception,Amazon.PowerShell.Cmdlets.S3.GetS3BucketCmdlet
Use-STSRoleよりスイチロールして、S3 Bucket一覧を再取得して見る。
Bucket一覧を取得できました。
PS C:\Windows\system32> $creds = (Use-STSRole -RoleArn "arn:aws:iam::123456789012:role/switch-role-for-s3" -RoleSessionName "test").Credentials
PS C:\Windows\system32> Get-S3Bucket -Credential $creds
CreationDate BucketName
------------ ----------
12/13/2023 5:12:10 PM ais-test-bucket-20231212
6/17/2023 11:49:13 PM aws-cloudtrail-logs-538815528650-6678835d
6/29/2023 11:49:44 AM aws-quicksetup-patchpolicy-access-log-538815528650-9b41-jkj34
8/19/2023 11:11:27 AM cdk-hnb659fds-assets-538815528650-ap-northeast-1
.............
4.EndPointを利用する場合の方法
東京EndpointUrlを指定する方法
$creds = (Use-STSRole -RoleArn $roleARN -RoleSessionName "test" -Region ap-northeast-1 -EndpointUrl "https://sts.ap-northeast-1.amazonaws.com").Credentials
注意点
スイッチロールの有効期限はデフォルトで 1 時間です。ロールの管理画面から「編集」ボタンをクリックして「最大セッション時間」を変更することで、時間を延長することもできます。セキュリティ上は 1~2 時間の範囲で設定するのがおすすめです。
最後に
どなたかの参考になれば幸いです〜。
以上、最後まで読んでいただきありがとうございました。
参考
https://docs.aws.amazon.com/powershell/latest/reference/items/Use-STSRole.html
https://docs.aws.amazon.com/powershell/latest/reference/items/Get-S3Bucket.html