Alibaba Cloud CLI で RAM ロールを引き受けるように設定することで、権限の低い AccessKey を使用して、権限の高い AccessKey を直接公開することなく、クラウドリソースにアクセスするための STS 一時的認証情報を自動的に取得できます。このトピックでは、2 つの設定方法—RamRoleArn (RAM ロールを直接引き受ける) と ChainableRamRoleArn (既存の CLI 認証情報から連鎖して RAM ロールを引き受ける)—および、それぞれの適用シナリオについて説明します。
バージョン要件
Alibaba Cloud CLI のバージョンは 3.3.0 以上である必要があります。aliyun version を実行して現在のバージョンを確認し、バージョンが古い場合は「Alibaba Cloud CLI のインストール、更新、アンインストール」をご参照のうえ、スペックアップしてください。
RamRoleArn
RamRoleArn は、権限の低い AccessKey を使用して権限の高い RAM ロールを引き受け、STS 一時的認証情報を取得します。この AccessKey には AliyunSTSAssumeRoleAccess ポリシーのみが必要です。有効な権限は、ターゲットロールにアタッチされたポリシーによって決まります。この方法は、ローカル開発環境や権限分離が必要なシナリオに適しています。
前提条件
RAM ユーザーの AccessKey が作成され、
AliyunSTSAssumeRoleAccessポリシーが付与されていること。ターゲットの RAM ロールが作成され、そのロールの信頼ポリシーで RAM ユーザーによるロールの引き受けが許可されていること。
ターゲットの RAM ロールの ARN が取得済みであること。RAM コンソールのロール詳細ページで確認できます。フォーマットは
acs:ram::<ACCOUNT_ID>:role/<RoleName>です。
前提条件の詳細な準備については、「AccessKey ペアを使用した API 呼び出し」の「AccessKey の間接的な使用」のステップをご参照ください。
認証情報の設定
対話形式での設定
次のコマンドを実行して設定を開始します。
<ProfileName>をカスタムプロファイル名 (例:RamRoleProfile) に置き換えてください。aliyun configure --mode RamRoleArn --profile <ProfileName>プロンプトに従って設定情報を入力します。
Configuring profile 'RamRoleArnProfile' in 'RamRoleArn' authenticate mode... Access Key Id []: <yourAccessKeyID> Access Key Secret []: <yourAccessKeySecret> Sts Region []: cn-hangzhou Ram Role Arn []: acs:ram::012345678910****:role/Alice Role Session Name []: alice External ID []: abcd1234 Expired Seconds [900]: 900 Default Region Id []: cn-hangzhou Default Output Format [json]: json (Only support json) Default Language [zh|en] en: en Saving profile[RamRoleArnProfile] ...Done.ターミナルに
Configure Doneとウェルカムメッセージが表示されたら、設定は完了です。
設定が成功すると、そのプロファイルが自動的にアクティブなプロファイルになります。別のプロファイルに切り替えるには、aliyun configure switch --profile <ProfileName> コマンドを実行してください。
非対話形式での設定
Bash
aliyun configure set \
--profile RamRoleArnProfile \
--mode RamRoleArn \
--access-key-id <yourAccessKeyID> \
--access-key-secret <yourAccessKeySecret> \
--sts-region "cn-hangzhou" \
--ram-role-arn "acs:ram::012345678910****:role/Alice" \
--role-session-name "alice" \
--external-id "abcd1234" \
--expired-seconds 900 \
--region "cn-shanghai"PowerShell
aliyun configure set `
--profile RamRoleArnProfile `
--mode RamRoleArn `
--access-key-id <yourAccessKeyID> `
--access-key-secret <yourAccessKeySecret> `
--sts-region "cn-hangzhou" `
--ram-role-arn "acs:ram::012345678910****:role/Alice" `
--role-session-name "alice" `
--external-id "abcd1234" `
--expired-seconds 900 `
--region "cn-shanghai"認証情報の検証
設定が完了したら、次のコマンドを実行して認証情報が有効であることを確認します。
aliyun sts get-caller-identity出力:
{
"AccountId": "191317683912****",
"Arn": "acs:ram::191317683912****:assumed-role/<role-name>/<role-session-name>",
"IdentityType": "AssumedRoleUser",
"PrincipalId": "30004467717606****:<role-session-name>",
"RequestId": "0FFADC33-EA49-5E2A-977F-0BA820D6****",
"RoleId": "30004467717606****"
}認証情報のリフレッシュ
CLI は手動介入なしで認証情報のリフレッシュを自動的に管理します。STS 一時的認証情報が期限切れになる前に、CLI は再度 STS AssumeRole を呼び出して新しい認証情報を取得します。これは実行中の CLI コマンドには影響しません。
ChainableRamRoleArn
ChainableRamRoleArn は、既存の CLI 認証情報プロファイル (ソースプロファイル) から連鎖して別の RAM ロールを引き受けます。CLI はまずソースプロファイルから中間認証情報を取得し、その認証情報を使用して STS AssumeRole を呼び出し、最終的な STS 一時的認証情報を取得します。この方法は、クロスアカウント、マルチホップのロールチェーンシナリオ、または EcsRamRole に基づいて追加のロールを引き受ける必要があるシナリオに適しています。
ChainableRamRoleArn 認証情報タイプは、ソース認証情報プロファイルを指定し、そのプロファイルから中間認証情報 (AccessKey または STS 一時的認証情報) を取得し、その中間認証情報を使用してターゲットロールを引き受け、最終的な STS 一時的認証情報を取得することで機能します。
前提条件
設定済みの EcsRamRole、AK、または RamRoleArn プロファイルなど、有効な CLI プロファイル (ソースプロファイル) がすでに存在すること。
ソースプロファイルに関連付けられたプリンシパル (RAM ユーザーまたはロール) が、ターゲットの RAM ロールを引き受ける権限を持っていること (ターゲットロールの信頼ポリシーでプリンシパルによる引き受けが許可されていること)。
ターゲットの RAM ロールの ARN が取得済みであること。フォーマットは
acs:ram::<ACCOUNT_ID>:role/<RoleName>です。
認証情報の設定
対話形式での設定
次のコマンドを実行して設定を開始します。
<ProfileName>をカスタムプロファイル名 (例:ChainProfile) に置き換えてください。aliyun configure --mode ChainableRamRoleArn --profile <ProfileName>プロンプトに従って設定情報を入力します。
Configuring profile 'ChainableProfile' in 'ChainableRamRoleArn' authenticate mode... Source Profile []: RamRoleArnProfile Sts Region []: cn-hangzhou Ram Role Arn []: acs:ram::012345678910****:role/Alice Role Session Name []: alice External ID []: abcd1234 Expired Seconds [900]: 900 Default Region Id []: cn-hangzhou Default Output Format [json]: json (Only support json) Default Language [zh|en] en: en Saving profile[ChainableProfile] ...Done.説明上記の例では、
RamRoleArnProfileは既存のソースプロファイルの名前であり、RAM ロールの ARN はサンプル値です。これらを実際の値に置き換えてください。Sts RegionとExternal Idのプロンプトは Enter キーを押してスキップできます。ターミナルに
Configure Doneとウェルカムメッセージが表示されたら、設定は完了です。
設定が成功すると、そのプロファイルが自動的にアクティブなプロファイルになります。別のプロファイルに切り替えるには、aliyun configure switch --profile <ProfileName> コマンドを実行してください。
非対話形式での設定
コマンド例:
Bash
aliyun configure set \
--profile ChainableProfile \
--mode ChainableRamRoleArn \
--source-profile RamRoleArnProfile \
--sts-region "cn-hangzhou" \
--ram-role-arn "acs:ram::012345678910****:role/Alice" \
--role-session-name "alice" \
--external-id "abcd1234" \
--expired-seconds 900 \
--region "cn-shanghai"PowerShell
aliyun configure set `
--profile ChainProfile `
--mode ChainableRamRoleArn `
--region cn-hangzhou `
--source-profile EcsRoleProfile `
--ram-role-arn acs:ram::<UID>:role/<RoleName> `
--role-session-name chain-session `
--expired-seconds 900--source-profile で指定されたプロファイルは、CLI 設定ファイルにすでに存在している必要があります。そうでない場合、can not load the source profile: <name> というエラーが返されます。aliyun configure list を実行して、既存のすべてのプロファイルを表示できます。
認証情報の検証
設定が完了したら、aliyun sts get-caller-identity コマンドを実行して認証情報が有効であることを確認します。
認証情報のリフレッシュ
CLI は手動介入なしで認証情報のリフレッシュを自動的に管理します。STS 一時的認証情報が期限切れになる前に、CLI はまずソースプロファイルの認証情報をリフレッシュし (ソースプロファイルのリフレッシュロジックに従います。たとえば、EcsRamRole は IMDS を通じてリフレッシュします)、その後、再度 STS AssumeRole を呼び出して新しい認証情報を取得します。
認証情報の削除
CLI のローカル設定から RAM ロールの認証情報を削除します。
aliyun configure delete --profile <ProfileName>削除されたプロファイルが現在アクティブなプロファイルである場合、CLI は自動的にプロファイルリストの最初のプロファイルに切り替わります。