IAM ロールに切り替える (Tools for Windows PowerShell)
ロールは、必要な AWS リソースへのアクセスに使用できる一連のアクセス許可を指定します。その点では、AWS Identity and Access Management(IAM)のユーザーに似ています。ユーザーとしてサインインすると、特定の一連のアクセス許可が付与されます。ただし、ロールにはサインインされませんが、一度サインインするとロールを切り替えることもできます。こうすると、元のユーザーアクセス権限が一時的に無効になり、そのロールに割り当てられたアクセス権限が代わりに付与されます。ロールは、自身のアカウントのロールでも、他の AWS アカウント のロールでもかまいません。ロールとその利点、およびロールを作成して設定する方法については、「IAM ロール」および「IAM ロールの作成」を参照してください。
重要
IAM ユーザーと切り替え後のロールのアクセス許可は、累積されません。同時に有効になるアクセス権限のセットは 1 つのみです。ロールを切り替えると、ユーザーアクセス権限が一時的に無効になり、切り替え後のロールに割り当てられたアクセス権限が有効になります。そのロールを終了すると、ユーザーアクセス権限が自動的に復元されます。
このセクションでは、AWS Tools for Windows PowerShell のコマンドラインで作業するときにロールを切り替える方法について説明します。
開発環境にアカウントがあり、場合によって、本稼働環境で Tools for Windows PowerShellUse-STSRole
コマンドレットを実行します。このコマンドは、リクエストされたロールの一時的なセキュリティ証明書を返します。それらの認証情報は、以降の PowerShell コマンドで、本稼働環境のリソースにアクセスするためのロールのアクセス権限と共に使用します。ロールの使用中に、開発アカウントのユーザーアクセス許可を使用することはできません。同時に有効になるアクセス許可のセットは 1 つに限られるためです。
注記
セキュリティ上の理由から、管理者は AWS CloudTrail ログを確認して、AWS でアクションを実行したユーザーを調べることができます。管理者は、ロールを引き受けるときに、ソース ID またはロールセッション名の指定を要求する場合があります。詳細については、sts:SourceIdentityおよびsts:RoleSessionNameを参照してください。
すべてのアクセスキーとトークンは例にすぎず、実際にはそのように使用できないことに注意してください。ライブ環境の適切な値に置き換えてください。
ロールに切り替えるには (Tools for Windows PowerShell)
-
PowerShell コマンドプロンプトを開き、現在の IAM ユーザーまたはフェデレーションロールのアクセスキーを使用するように、デフォルトのプロファイルを設定します。Tools for Windows PowerShell を以前に使用した場合、この設定はすでに完了している可能性があります。AWS アカウントのルートユーザー ではなく、IAM ユーザーとしてサインインしている場合にのみ、ロールを切り替えることができます。
PS C:\>
Set-AWSCredentials -AccessKey
-SecretKeyAKIAIOSFODNN7EXAMPLE
-StoreAswJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
MyMainUserProfile
PS C:\>
Initialize-AWSDefaults -ProfileName
MyMainUserProfile
-Regionus-east-2
詳細については、AWS ユーザーガイドの「AWS Tools for Windows PowerShell 認証情報の指定」を参照してください。
-
新しいロールの認証情報を取得するには、以下のコマンドを実行して 123456789012 アカウントの
ロールに切り替えます。ロール ARN は、ロールを作成したアカウント管理者から入手します。コマンドには、セッション名も指定する必要があります。その名前には任意のテキストを選択できます。以下のコマンドは、認証情報をリクエストした後、返されたオブジェクトからRoleName
Credentials
プロパティオブジェクトを取得して、$Creds
変数に格納します。PS C:\>
$Creds = (Use-STSRole -RoleArn "arn:aws:iam::
123456789012
:role/RoleName
" -RoleSessionName "MyRoleSessionName
").Credentials$Creds
オブジェクトにはこの時点で、以降の手順に必要なAccessKeyId
、SecretAccessKey
、SessionToken
要素が格納されています。以下のサンプルコマンドに示しているのは、一般的な値です。PS C:\>
$Creds.AccessKeyId
AKIAIOSFODNN7EXAMPLEPS C:\>
$Creds.SecretAccessKey
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEYPS C:\>
$Creds.SessionToken
AQoDYXdzEGcaEXAMPLE2gsYULo+Im5ZEXAMPLEeYjs1M2FUIgIJx9tQqNMBEXAMPLECvSRyh0FW7jEXAMPLEW+vE/7s1HRp XviG7b+qYf4nD00EXAMPLEmj4wxS04L/uZEXAMPLECihzFB5lTYLto9dyBgSDyEXAMPLE9/g7QRUhZp4bqbEXAMPLENwGPy Oj59pFA4lNKCIkVgkREXAMPLEjlzxQ7y52gekeVEXAMPLEDiB9ST3UuysgsKdEXAMPLE1TVastU1A0SKFEXAMPLEiywCC/C s8EXAMPLEpZgOs+6hz4AP4KEXAMPLERbASP+4eZScEXAMPLEsnf87eNhyDHq6ikBQ==PS C:\>
$Creds.Expiration
Thursday, June 18, 2018 2:28:31 PM -
以降のコマンドでこれらの認証情報を使用するには、
-Credential
パラメータに指定します。たとえば、以下のコマンドでロールの認証情報を使用すると、そのロールにiam:ListRoles
アクセス許可が付与されている場合にのみ、Get-IAMRoles
コマンドレットを実行できます。PS C:\>
get-iamroles -Credential $Creds
-
元の認証情報に戻すには、
-Credentials $Creds
パラメータの使用を止めるだけです。PowerShell ではデフォルトのプロファイルに保存された認証情報が再び使用されるようになります。