Alibaba Cloud CLI は、特定の統合シナリオ向けに、OIDC、CloudSSO、External、CredentialsURI、BearerToken という 5 つの高度な認証方式を提供します。これらの方式により、長期 AccessKey をローカルに保存する必要がなくなります。本トピックでは、RRSA (RAM Roles for Service Accounts) Pod、エンタープライズマルチアカウント管理、外部シークレットシステム、HTTP 認証情報サービス、または Bearer Token 認証を伴うシナリオで CLI を安全に使用できるよう、各方式のシナリオ、設定、および一般的な問題について説明します。
バージョン要件
Alibaba Cloud CLI バージョン 3.3.0 以降が必要です。aliyun version コマンドを実行して、現在のバージョンを確認します。バージョンが 3.3.0 より前の場合は、「CLI のインストールまたは更新」を参照してアップグレードしてください。
BearerToken 方式には、Alibaba Cloud CLI バージョン 3.3.16 以降が必要です。
OIDC
OIDC 方式は、OIDC 互換の外部 ID プロバイダーから取得した ID トークンを使用して認証し、ロールを引き受けます。この方式は、RRSA が有効になっている ACK または ACS クラスター内の Pod で使用します。CLI は、Pod に自動的にマウントされる OIDC トークンファイルを読み取り、STS の AssumeRoleWithOIDC API を呼び出して一時的な認証情報を取得し、有効期限が切れる前に自動的に更新します。
前提条件
OIDC ID プロバイダー用の RAM ロールを作成済みであり、その信頼ポリシーによって、
ack-rrsa-{cluster-id}の形式でクラスターによって自動的に作成される OIDC ID プロバイダーがロールを引き受けることが許可されていること。RRSA を使用して、Pod のサービスアカウントを RAM ロールに関連付けていること。
資格情報の設定
非インタラクティブ設定 (推奨)
RRSA を有効にした後、ack-pod-identity-webhook コンポーネントをインストールすると、以下の環境変数が自動的に Pod に設定されます。CLI はこれらの変数を自動的に認識します。コンポーネントのインストール手順については、「ACK マネージドクラスターのコンポーネント管理」をご参照ください。
ALIBABA_CLOUD_OIDC_PROVIDER_ARNALIBABA_CLOUD_OIDC_TOKEN_FILEALIBABA_CLOUD_ROLE_ARN
環境変数を使用してプロファイルを設定するには、次のコマンドを実行します。
aliyun configure set \
--mode OIDC \
--profile OIDCProfile \
--oidc-provider-arn $ALIBABA_CLOUD_OIDC_PROVIDER_ARN \
--oidc-token-file $ALIBABA_CLOUD_OIDC_TOKEN_FILE \
--ram-role-arn $ALIBABA_CLOUD_ROLE_ARN \
--role-session-name "rrsa-pod" \
--region cn-shanghaiインタラクティブ設定
次のコマンドを実行して設定を開始します。
<ProfileName>を、OIDCProfileなどのカスタムプロファイル名に置き換えます。aliyun configure --mode OIDC --profile <ProfileName>プロンプトに従って、OIDC プロバイダーの ARN、OIDC トークンファイルのパス、RAM ロールの ARN、ロールセッション名、デフォルトのリージョン、および言語を入力します。
Configuring profile 'OIDC_Profile' in 'OIDC' authenticate mode... OIDC Provider ARN []: acs:ram::012345678910****:oidc-provider/TestOidcIdp OIDC Token File []: /path/to/oidctoken RAM Role ARN []: acs:ram::012345678910****:role/TanakaHanako Role Session Name []: rrsa-pod-name Default Region Id []: cn-shanghai Default Output Format [json]: json (Only support json) Default Language [zh|en] en: en Saving profile[OIDC_Profile] ...Done.ターミナルに
Configure Doneとウェルカムメッセージが表示され、設定が正常に完了したことを示します。
設定が完了したら、ポッドで aliyun sts get-caller-identity コマンドを実行し、認証情報が有効であることを検証します。
認証情報の更新
ACK または ACS クラスターは、Pod 内の OIDC トークンファイルを自動的にローテーションします。Alibaba Cloud CLI は、STS の AssumeRoleWithOIDC API を自動的に呼び出し、最新の OIDC トークンを渡して資格情報を更新します。このプロセスはユーザーに対して透過的に行われます。
CloudSSO
CloudSSO 方式は、Alibaba Cloud の CloudSSO ディレクトリサービスを使用する企業向けです。これにより、統一された ID を使用して CLI にログインし、異なるリソースディレクトリのアカウントとアクセス設定を切り替えることができます。
前提条件
所属企業で CloudSSO がデプロイされ、ユーザーディレクトリとアクセス設定が構成済みであること。
CloudSSO ユーザーに、少なくとも 1 つのアクセス設定が割り当てられていること。
管理者から CloudSSO のログイン URL を取得済みであること。URL は通常、
https://signin-<region>.alibabacloudsso.com/<directory-name>/loginの形式です。CloudSSO ユーザーのログイン URL の取得方法については、「ユーザーポータル URL の取得」をご参照ください。
資格情報の設定
次のコマンドを実行して設定を開始します。
<ProfileName>は、SSOProfileなどのカスタムプロファイル名に置き換えます。aliyun configure --mode CloudSSO --profile <ProfileName>プロンプトに従って、
SignIn Urlを入力します。Configuring profile 'SSOProfile' in 'CloudSSO' authenticate mode... CloudSSO Sign In Url []: https://signin-<region>.alibabacloudsso.com/<directory-name>/login開いたブラウザーウィンドウで、画面の指示に従って CloudSSO ユーザーのログインを完了します。ログイン後、ブラウザーウィンドウを閉じます。
説明ブラウザーウィンドウが開かない場合、またはターミナルのみの環境の場合は、CLI プロンプトから
SignIn urlとUser codeをコピーし、ブラウザーに貼り付けてログインを完了します。プロンプトの例を次に示します。
If the browser does not open automatically, use the following URL to complete the login process: SignIn url: https://signin-****.alibabacloudsso.com/device/code User code: CGKM-LIXZCLI はログインの成功を示し、アクセス可能なリソースディレクトリの管理アカウントまたはメンバーアカウントを一覧表示します。アクセスしたいアカウントに対応する番号を入力します。
Now you can login to your account with SSO configuration in the browser. You have successfully logged in. Please choose an account: 1. <RD Management Account> 2. <other-account-name> Please input the account number: 1CLI は、使用可能な アクセス設定 (ユーザー権限設定) を一覧表示します。使用したいアクセス設定に対応する番号を入力します。
Please choose an access configuration: 1. <access-configuration1> 2. <access-configuration2> Please input the access configuration number: 2デフォルトのリージョンと言語を設定します。例:
Default Region Id []: cn-shanghai Default Language [zh|en] en: enリージョンの一覧については、「リージョンとアベイラビリティゾーン」をご参照ください。一部のクラウド製品はリージョン固有です。リソースが存在するリージョンをデフォルトに設定することを推奨します。
ターミナルに
Configure Doneとウェルカムメッセージが表示されます。これは、設定が成功したことを示します。
設定が完了したら、aliyun sts get-caller-identity コマンドを実行して、認証情報が有効であることを検証します。
構成が正常に作成されると、自動的にアクティブな構成として設定されます。別の構成に切り替えるには、aliyun configure switch --profile <ProfileName> コマンドを実行します。
認証情報の更新
CloudSSO 資格情報は自動的に更新されません。有効期限が切れた後、aliyun configure --mode CloudSSO --profile <ProfileName> コマンドを再度実行して設定する必要があります。
External
External 方式は、外部プログラムを使用して資格情報データを取得します。資格情報が必要になると、Alibaba Cloud CLI は指定されたプログラムを実行し、その標準出力を資格情報として使用します。この方式は、カスタムの資格情報取得ロジックが必要なシナリオに適しています。
前提条件
指定された JSON 形式の資格情報を標準出力 (stdout) に出力できる実行可能なプログラムまたはスクリプトがあること。必要な形式は次のとおりです。
AccessKey
{ "mode": "AK", "access_key_id": "<yourAccessKeyID>", "access_key_secret": "<yourAccessKeySecret>" }STS トークン
{ "mode": "StsToken", "access_key_id": "<yourAccessKeyID>", "access_key_secret": "<yourAccessKeySecret>", "sts_token": "<yourSecurityToken>" }プログラムはステータスコード 0 で終了する必要があります。ゼロ以外の終了コードは失敗を示します。
資格情報の設定
非インタラクティブ設定 (推奨)
Bash
aliyun configure set \
--mode External \
--profile ExternalProfile \
--process-command "/path/to/credential-helper" \
--region cn-shanghaiPowerShell
aliyun configure set `
--mode External `
--profile ExternalProfile `
--process-command "/path/to/credential-helper" `
--region cn-shanghaiインタラクティブ設定
aliyun configure --mode External --profile <ProfileName>プロンプトに従って、プロセス コマンド、デフォルトリージョン、言語を入力して設定を完了します。
設定が完了したら、aliyun sts get-caller-identity コマンドを実行して、認証情報が有効であることを検証します。
認証情報の更新
External 方式を使用する場合、CLI は資格情報をキャッシュしたり、自動的に更新したりしません。CLI は、資格情報が必要になるたびに外部プログラムを再実行します。外部プログラムが更新ロジックを実装する責任を負います。
CredentialsURI
CredentialsURI 方式は、ユーザーが提供する HTTP エンドポイントから一時的なセキュリティ認証情報 (STS トークン) を取得します。この方式は、自己管理型の資格情報配布サービスがあるシナリオに適しています。
前提条件
HTTP 200 ステータスコードで、指定された JSON 形式の資格情報レスポンスを返すことができる HTTP または HTTPS エンドポイントがあること。レスポンスボディは、次の JSON 形式である必要があります。
{
"Code": "Success",
"AccessKeyId": "<yourAccessKeyID>",
"AccessKeySecret": "<yourAccessKeySecret>",
"SecurityToken": "<yourSecurityToken>"
}指定された URL が HTTP 200 ステータスコードを返さない場合、またはレスポンスの内容が期待される形式と一致しない場合、Alibaba Cloud CLI はリクエストを失敗として扱います。
レスポンス JSON の
Codeフィールドは、"Success"である必要があります (大文字と小文字が区別されます)。
資格情報の設定
次のコマンドを実行して設定を開始します。
<ProfileName>をURIProfileなどのカスタムプロファイル名に置き換えます。aliyun configure --mode CredentialsURI --profile <ProfileName>プロンプトに従って、Credentials URI、デフォルトリージョン、言語を入力します。
Configuring profile 'URIProfile' in 'CredentialsURI' authenticate mode... Credentials URI []: http://credentials.uri/ Default Region Id []: cn-shanghai Default Output Format [json]: json (Only support json) Default Language [zh|en] en: en Saving profile[URIProfile] ...Done.リージョンの一覧については、「リージョンとアベイラビリティゾーン」をご参照ください。一部のクラウド製品はリージョン固有です。リソースが存在するリージョンをデフォルトに設定することを推奨します。
ターミナルに
Configure Doneとウェルカムメッセージが表示され、設定が正常に完了したことを示します。
プロファイルが正常に設定されると、自動的にアクティブなプロファイルになります。別のプロファイルに切り替えるには、 aliyun configure switch --profile <ProfileName> コマンドを実行します。
設定が完了したら、aliyun sts get-caller-identity コマンドを実行して、認証情報が有効になったことを確認します。
認証情報の更新
資格情報の有効期限が切れると、CLI は自動的に新しい HTTP GET リクエストをエンドポイントに送信して、新しい資格情報を取得します。このプロセスはユーザーに対して透過的に行われます。HTTP エンドポイントは、リクエストごとに有効な STS トークンを返す必要があります。
BearerToken
BearerToken 方式は、Bearer Token を使用して Alibaba Cloud API サービスで認証します。この方式は、製品プラグインを介して API を呼び出し、対象サービスが Bearer Token をサポートし、発行するシナリオに適しています。
前提条件
対象サービスによって発行された Bearer Token を取得済みであること。
対象製品の CLI プラグインをインストール済みであること:
aliyun plugin install --name <plugin-name>。
BearerToken モードは、製品プラグインを介した API 呼び出しのみをサポートします。製品の API を呼び出すには、まず対応するプラグインをインストールする必要があります:
aliyun plugin install --name <plugin-name>。CLI のバージョンは
3.3.16以上である必要があります。
資格情報の設定
非インタラクティブ設定 (推奨)
aliyun configure set \
--mode BearerToken \
--profile BearerProfile \
--bearer-token <your-bearer-token> \
--region cn-shanghai認証ヘッダー名をカスタマイズするには、--bearer-token-header-key パラメーターを追加します:
aliyun configure set \
--mode BearerToken \
--profile BearerProfile \
--bearer-token <your-bearer-token> \
--bearer-token-header-key <custom-header-name> \
--region cn-shanghaiインタラクティブ設定
設定を開始するには、次のコマンドを実行します。コマンド内の
<ProfileName>は、BearerProfileなどのカスタムプロファイル名に置き換えます。aliyun configure --mode BearerToken --profile <ProfileName>プロンプトに従って、Bearer Token、オプションの Bearer Token ヘッダーキー (デフォルトを使用する場合は空欄のままにします)、デフォルトリージョン、言語を入力します。
Configuring profile 'BearerProfile' in 'BearerToken' authenticate mode... Bearer Token []: eyJhbGciOiJSUzI1**** Bearer Token Header Key [] (optional, e.g. x-custom-token; leave empty for x-acs-bearer-token): Default Region Id []: cn-shanghai Default Output Format [json]: json (Only support json) Default Language [zh|en] en: en Saving profile[BearerProfile] ...Done.ターミナルに
Configure Doneとウェルカムメッセージが表示され、設定が成功したことを示します。
設定が完了したら、次のコマンドを実行して、製品プラグインを介して対象製品の API を呼び出し、資格情報が有効であることを確認します。
aliyun <command> <sub-command> --profile BearerProfileBearerToken モードの configure hello コマンドは、接続性チェックを実行せず、すぐに成功メッセージを返します。実際の API コールを行うことで、認証情報の有効性を検証する必要があります。
環境変数
BearerToken 方式は、資格情報パラメーターを設定するために次の環境変数をサポートします。
環境変数 | 説明 |
| Bearer Token の値。 |
| カスタム認証ヘッダーの名前です。値を指定しない場合、デフォルトは |
資格情報の削除
ローカル CLI 設定から資格情報プロファイルを削除するには、次のコマンドを実行します。
aliyun configure delete --profile <ProfileName>アクティブなプロファイルを削除すると、CLI は自動的に設定リストの最初のプロファイルに切り替わります。