powershellを使ってIAMロールからスイッチロールする

AWS スイッチロールとは

AWS スイッチロールは、AWS IAM が提供するアクセス権限の切り替え機能です。
AWS マネジメントコンソールでアクセス権限があるユーザーは、スイッチロールを使用して、異なる AWS アカウントまたは異なる IAM ユーザーに切り替えることができます。

今回やりたいこと

今回はWindows powershellを使って、スイチロールを試してみます。

作業ステップ

1.EC2用ロールを作成

EC2の参照権限のみのロールを作成し、EC2にアタッチする

file

2.スイチ先のロールを作成

スイチ先のロールにS3の参照権限を設定して、信頼ポリシーに上記作成のec2-test-roleのARNを記載する
file

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

Last modified: 2023-12-15

Author