このトピックでは、Container Compute Service (ACS) クラスター内の指定された Container Registry (ACR) 名前空間に対するリソースアクセス管理 (RAM) ユーザー権限を付与する方法について説明します。
ステップ 1: 権限ポリシーの変更
ACS コンソールに初めてアクセスすると、AliyunCCManagedAcrRole ロールが作成され、ACS に割り当てられます。 ACS はこのロールを引き受けてコンテナーレジストリにアクセスし、ACS ポッドの起動に使用される一時的な認証情報を取得できます。 デフォルトでは、次の権限ポリシーがロールにアタッチされます。
{
"Version": "1",
"Statement": [
{
"Action": [
"cr:GetAuthorizationToken",
"cr:ListInstanceEndpoint",
"cr:PullRepository"
],
"Resource": [
"*"
],
"Effect": "Allow"
}
]
}ポリシーのアスタリスク (*) はワイルドカード文字です。 たとえば、ポリシーの Resource セクションのアスタリスクは、すべての名前空間とリージョンにあるコンテナーレジストリのインスタンスを指定します。 つまり、このポリシーは、これらすべてのインスタンスに対して cr:GetAuthorizationToken、cr:ListInstanceEndpoint、および cr:PullRepository 権限を提供します。 デフォルトポリシーは、過剰な範囲のリソースに対する権限を提供します。できるだけ早く、Resource セクションのリソースの範囲を制限するようにポリシーを変更する必要があります。 例:
acs:cr:::repository/$instanceid/$namespace/: コンテナーレジストリのインスタンスを ID で、名前空間を名前で指定します。acs:cr:*::repository/$instanceid/: コンテナーレジストリのインスタンスを ID で指定します。
ステップ 2: カスタムポリシーの作成
Alibaba Cloud アカウントを使用して、RAM コンソール にログオンします。
左側のナビゲーションペインで、権限 >ポリシー を選択します。
ポリシー ページで、[ポリシーの作成] をクリックします。
ポリシーの作成 ページで、[JSON] タブをクリックします。
次のポリシーコンテンツをコードエディターにコピーし、ポリシーコンテンツの
$instanceidと$namespaceを実際の値に置き換えます。説明RAM ユーザーにさらに権限を付与する場合は、RAM 認証ルール を参照して、Action パラメーターと Resource パラメーターを設定します。 ポリシー構文の詳細については、「ポリシーの構造と構文」をご参照ください。
{ "Statement": [ { "Effect": "Allow", "Action": [ "cr:ListInstance*", "cr:GetInstance*", "cr:ListSignature*" ], "Resource": "*" }, { "Action": [ "cr:*" ], "Effect": "Allow", "Resource": [ "acs:cr:*:*:repository/$instanceid/$namespace/*", "acs:cr:*:*:repository/$instanceid/$namespace" ] }, { "Action": [ "cr:List*" ], "Effect": "Allow", "Resource": [ "acs:cr:*:*:repository/$instanceid/*", "acs:cr:*:*:repository/$instanceid/*/*" ] } ], "Version": "1" }説明ポリシーのアスタリスク (
*) はワイルドカード文字です。 例:cr:ListInstance*は、cr:ListInstance で始まるすべてのアクションを指定します。acs:cr:*:*:repository/$instanceid/$namespace/*をacs:cr:*:*:repository/cri-123456/ns/*に設定すると、$instanceidパラメーターと$namespaceパラメーターは、アクセスするコンテナーレジストリのインスタンスの ID と名前空間に置き換えられます。 この設定により、すべてのリージョンで ID が cri-123456 のコンテナーレジストリのインスタンスの名前空間に対するフルアクセス権限が付与されます。
コンテンツを入力した後、[OK] をクリックします。 表示されるダイアログボックスで、ポリシー名を入力し、[OK] をクリックしてポリシーを作成します。
ステップ 3: カスタムポリシーを RAM ユーザーにアタッチする
Alibaba Cloud アカウントを使用して、RAM コンソール にログオンします。
左側のナビゲーションペインで、ID >ユーザー を選択します。
ユーザー ページで、権限を付与する RAM ユーザーを見つけ、アクション 列の [権限の追加] をクリックします。
権限の付与 パネルで、RAM ユーザーに権限を付与します。
リソーススコープ を指定します。
説明アカウント: 権限は現在の Alibaba Cloud アカウントに付与されます。
リソースグループ: 権限は特定のリソースグループに付与されます。 承認スコープに [特定のリソースグループ] を選択した場合は、クラウドサービスがリソースグループをサポートしていることを確認してください。 詳細については、「リソースグループで動作するサービス」をご参照ください。
プリンシパルを指定します。 プリンシパルは、権限を付与する RAM ユーザーです。 デフォルトでは、現在の RAM ユーザーがプリンシパルとして指定されています。 別の RAM ユーザーを指定することもできます。
ポリシーを選択します。
説明一度に最大 5 つのポリシーを RAM ユーザーにアタッチできます。 さらにポリシーをアタッチする場合は、操作を繰り返します。
[権限の付与] をクリックします。
説明RAM ユーザーを使用してコンテナーレジストリコンソールにログオンします。 その後、RAM ユーザーがアクセスを承認されている名前空間で操作を実行できます。 たとえば、イメージのビルド、プッシュ、プルを実行できます。