Docker、containerd、またはその他のクライアントを使用して Container Registry (ACR) イメージをプッシュまたはプルする前に、認証のためのアクセス認証情報を設定する必要があります。認証情報には、永続パスワードと一時パスワードがあります。認証に成功すると、コンテナイメージや Helm チャートをプッシュおよびプルできます。
認証情報の説明
認証後、システムは RAM アクセス制御ポリシーに基づいて操作を認可し、実行できる操作の範囲を制御します。
アクセス資格情報は、Alibaba Cloud アカウントとそのパスワードとは独立しています。 ACR の固定パスワードは、お使いのアカウント (Alibaba Cloud アカウントまたは Resource Access Management (RAM) ユーザー) のコンソールログオンパスワードではありません。 これは、ACR コンソールのアクセス資格情報 ページで設定する専用のレジストリパスワードです。 資格情報には 2 種類あります。
永続パスワード:このパスワードは有効期限がありません。漏洩した場合、手動でリセットするまで有効なままです。セキュリティを高めるため、一時パスワードの使用を推奨します。パスワードを紛失した場合は、アクセス認証情報ページでリセットできます。
一時パスワード:このパスワードは 1 時間有効です。Security Token Service (STS) を使用してパスワードをリクエストした場合、パスワードはリクエストの Security Token Service トークンと同じ期間有効です。
Alibaba Cloud アカウントのアクセス認証情報と RAM ユーザーのアクセス認証情報は、互いに独立しています。RAM ユーザーは、Alibaba Cloud アカウントによって設定された永続パスワードを使用できません。各 RAM ユーザーは、自身の Alibaba Cloud アカウントで ACR コンソールにログインし、専用の永続パスワードを設定する必要があります。
Docker またはその他のクライアントを使用して ACR にログインする場合、--username パラメーターの値は、アカウントタイプによって異なります。
Alibaba Cloud アカウント: ユーザー名は、Alibaba Cloud アカウントのログイン名です。ACR コンソールの アクセス資格情報 ページで、完全な
docker loginコマンドと対応するユーザー名を確認できます。このユーザー名は、数字の文字列である Alibaba Cloud アカウント ID とは異なります。アカウント ID をユーザー名として使用すると、認証に失敗します。RAM ユーザー:ユーザー名は RAM ユーザーログイン名で、
<RAM-user-login-name>@<default-domain-of-alibaba-cloud-account>の形式です (例:username@China-1234567890.onaliyun.com)。
正しくないユーザー名による unauthorized: authentication required エラーを回避するため、docker login を実行する前に、ACR コンソールの アクセス資格情報 ページでユーザー名の正しい形式を確認してください。
永続パスワードの使用
Container Registry (ACR) は、ロールベースのログインをサポートしていません。 一時パスワードの使用の手順でログインしてください。
RAM ユーザー:RAM ユーザーとして ACR コンソールで永続パスワードを設定するには、Alibaba Cloud アカウントが事前に RAM ユーザーに コンソールログイン 権限を有効にする必要があります。コンソールアクセスが有効になっていない RAM ユーザーは、ACR コンソールにログインしたり、アクセス認証情報を設定したりすることはできません。
Alibaba Cloud アカウントは、RAM ユーザーの代わりに永続パスワードを設定または管理することはできません。RAM ユーザーは、自身の Alibaba Cloud アカウントで ACR コンソールにログインし、自分でアクセス認証情報を設定する必要があります。
Container Registryコンソールにログインします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションペインで、インスタンス をクリックします。
[インスタンス] ページで、管理するEnterprise Editionインスタンスをクリックします。
エンタープライズインスタンス管理ページの左側のナビゲーションペインで、 を選択します。
アクセス資格情報 ページで、パスワードの設定 をクリックします。
パスワードの設定 ダイアログボックスで、パスワード と パスワードの確認 を入力します。次に、OK をクリックします。
パスワードは 8 ~ 32 文字で、文字、記号、数字のうち少なくとも 2 種類の文字種を含む必要があります。
P@ssw0rdのような公知の脆弱なパスワードは使用しないでください。$記号はサポートされていません。エラーメッセージが表示されずに確認ボタンがグレーアウトする: OK ボタンをクリックしてもグレーアウトしてエラーメッセージが表示されない場合、パスワードがセキュリティ要件を満たしていない可能性があります (例えば、パスワードに
$などの禁止文字が含まれている、または一般的な脆弱なパスワードが使用されているなど)。パスワードを確認して修正し、再度お試しください。特殊文字が原因で Docker ログインに失敗する: パスワードに
@などの特殊文字が含まれている場合、ターミナルでdocker loginを実行すると、シェルエスケープが原因で失敗し、unauthorized: authentication requiredエラーが発生することがあります。この場合、[アクセス資格情報] ページでパスワードをリセットし、特殊文字を含まないパスワードを使用してください。過去のパスワードは取得できません: 固定パスワードを設定すると、その履歴は表示できなくなります。パスワードを紛失した場合は、アクセス資格情報 ページでリセットしてください。
次のステップ
Enterprise インスタンスにログインします。
VPC またはインターネットのアクセス制御を設定します。詳細については、「インターネットアクセス制御の設定」または「VPC アクセス制御の設定」をご参照ください。
ターミナルで、アクセス認証情報を入力して Enterprise インスタンスにログインします。次のサンプルコマンドをご参照ください。
docker login <Enterprise-Edition-instance-name>-registry.<region-of-the-Enterprise-Edition-instance>.cr.aliyuncs.com
一時パスワードの使用
Alibaba Cloud CLI がインストールされ、認証情報の設定と管理が完了している必要があります。
jq コマンドがインストールされている必要があります。
RAM ユーザーの作成が完了している必要があります。
OpenAPI Explorer で GetAuthorizationToken API を直接実行して、対象インスタンスの一時ログインユーザー名とパスワードを取得できます。
既存の AccessKey ペアを使用するか、AccessKey の作成を参照して新しいものを作成します。 AccessKey ID と AccessKey Secret を記録します。
次の内容を、スクリプトエディターの使用および RAM ユーザー権限の管理の手順で使用します。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "cr:GetAuthorizationToken", "cr:PullRepository", "cr:PushRepository" ], "Resource": "*" } ] }次のコマンドを実行して、一時パスワードを取得します。
ACR_ENDPOINT="<acr service endpoint>"<acr service endpoint>は、ACR インスタンスが存在するリージョンの エンドポイント です。export ALIYUN_AK="<aliyun access key>" # ステップ 1 の AccessKey ID。 export ALIYUN_SK="<aliyun access key secret>" # ステップ 1 の AccessKey Secret。 export ACR_INSTANCE_ID="<id of acr instance>" # 対象の ACR インスタンス ID。 export ACR_ENDPOINT="<acr service endpoint>"aliyun cr GetAuthorizationToken --endpoint $ACR_ENDPOINT --InstanceId $ACR_INSTANCE_ID --access-key-id $ALIYUN_AK --access-key-secret $ALIYUN_SK | jq -r '.AuthorizationToken'