Resource Access Management ( RAM ) を使用して、RAM ユーザーに異なるイメージ権限を付与できます。また、Security Token Service ( STS ) を使用して、イメージユーザーに一時的なイメージ権限を付与することもできます。
前提条件
RAM ユーザーは、Alibaba Cloud アカウントを使用して作成されます。詳細については、「RAM ユーザーを作成する」をご参照ください。
背景情報
Alibaba Cloud では、Resource Access Management ( RAM ) と Security Token Service ( STS ) を使用して、イメージリポジトリへのアクセスを柔軟かつ安全な方法で制御できます。デフォルトでは、Alibaba Cloud アカウントは、アカウントに属するリソースに対するフルアクセス権限を持っています。 RAM と STS を使用して、異なる RAM ユーザーにイメージリソースに対する異なる権限を付与し、一時的なアクセス権限を提供できます。認証ポリシーを構成する前に、RAM ドキュメントをお読みください。
RAM ユーザーの認証ポリシーを構成した後、RAM ユーザーを使用して Container Registry コンソールにログインし、Personal Edition インスタンスを作成し、レジストリのパスワードを設定してから、RAM ユーザーが権限を持つイメージを表示する必要があります。
RAM ユーザーに権限を付与する
RAM ユーザーに権限を付与する前に、RAM ユーザーに必要な以上の権限を付与していないことを確認してください。
すべての Alibaba Cloud リソースに対する管理権限を含む AdministratorAccess 権限を RAM ユーザーに付与する場合があります。この場合、RAM ユーザーは、以前に権限が付与されているかどうかに関係なく、Container Registry に対するすべての権限を持ちます。
システムポリシーを RAM ユーザーにアタッチする
デフォルトでは、AliyunContainerRegistryFullAccess ポリシーと AliyunContainerRegistryReadOnlyAccess ポリシーが Container Registry 用に作成されます。これらのポリシーを RAM ユーザーに直接アタッチできます。次の部分では、システムポリシーについて説明します。
AliyunContainerRegistryFullAccess
このポリシーは、RAM ユーザーに Alibaba Cloud アカウントと同じイメージリソースに対する権限を付与します。 RAM ユーザーは、イメージリソースに対するすべての操作を実行できます。
{ "Statement": [ { "Action": "cr:*", "Effect": "Allow", "Resource": "*" } ], "Version": "1" }AliyunContainerRegistryReadOnlyAccess
このポリシーは、RAM ユーザーにすべてのイメージリソースに対する読み取り専用権限を付与します。たとえば、RAM ユーザーはリポジトリリストを表示したり、イメージをプルしたりできます。
{ "Statement": [ { "Action": [ "cr:Get*", "cr:List*", "cr:PullRepository" ], "Effect": "Allow", "Resource": "*" } ], "Version": "1" }
この例では、AliyunContainerRegistryReadOnlyAccess ポリシーが RAM ユーザーにアタッチされています。
RAM 管理者として RAM コンソール にログインします。
左側のナビゲーションウィンドウで、 を選択します。
[ユーザー] ページで、必要な RAM ユーザーを見つけ、[権限の追加] 列の [アクション] をクリックします。

複数の RAM ユーザーを選択し、ページの下部にある [権限の追加] をクリックして、一度に複数の RAM ユーザーに権限を付与することもできます。
[権限の付与] パネルで、RAM ユーザーに権限を付与します。
リソーススコープパラメータを構成します。
[アカウント]:権限は現在の Alibaba Cloud アカウントに適用されます。
[リソースグループ]:権限は特定のリソースグループに適用されます。
説明リソーススコープパラメータに [リソースグループ] を選択した場合は、クラウドサービスがリソースグループをサポートしていることを確認してください。詳細については、「リソースグループで動作するサービス」をご参照ください。
プリンシパルを指定します。
プリンシパルとは、権限を付与する RAM ユーザーのことです。デフォルトでは、現在の RAM ユーザーが指定されています。別の RAM ユーザーを指定することもできます。
[ポリシー] 検索ボックスに AliyunContainerRegistryReadOnlyAccess を入力してポリシーを検索し、[AliyunContainerRegistryReadOnlyAccess] ポリシーを選択します。
[権限の付与] をクリックします。
[閉じる] をクリックします。
カスタムポリシーを RAM ユーザーにアタッチする
権限に対してきめ細かい制御を実施する場合は、カスタムポリシーを作成し、RAM ユーザーにアタッチできます。
[一般的なシナリオでのポリシー構成]
次の部分では、一般的なシナリオでカスタムポリシーを構成する方法について説明します。
シナリオ 1:RAM ユーザーに名前空間に対する読み取り権限を付与します。この例では、名前空間の名前は juzhong です。
RAM ユーザーが Container Registry インスタンスにログインすると、名前空間 juzhong 内のすべてのイメージをプルできます。 RAM ユーザーは、API 操作を呼び出すことによって、名前空間と名前空間内のすべてのリポジトリに関する情報を表示できます。
{ "Statement": [ { "Action": [ "cr:Get*", "cr:List*", "cr:PullRepository" ], "Effect": "Allow", "Resource": [ "acs:cr:*:*:repository/juzhong/*" ] } ], "Version": "1" }重要RAM ユーザーが Container Registry コンソール内のすべての名前空間を表示できるようにするには、次の認証構成を追加します。その後、RAM ユーザーはすべての名前空間とリポジトリを表示できます。ただし、RAM ユーザーは名前空間 juzhong 内のリポジトリからのみイメージをプルできます。
{ "Statement": [ { "Action": [ "cr:Get*", "cr:List*", "cr:PullRepository" ], "Effect": "Allow", "Resource": [ "acs:cr:*:*:repository/juzhong/*" ] }, { "Action": [ "cr:ListNamespace", "cr:ListRepository" ], "Effect": "Allow", "Resource": [ "*" ] } ], "Version": "1" }シナリオ 2:リポジトリに対するすべての権限を RAM ユーザーに付与します。この例では、リポジトリの名前は nginx で、中国 (杭州) リージョンの名前空間 juzhong にあります。
重要RAM ユーザーが Container Registry コンソールでリポジトリを管理できるようにするには、シナリオ 1 を参照して関連する構成を追加します。
{ "Statement": [ { "Action": [ "cr:*" ], "Effect": "Allow", "Resource": [ "acs:cr:cn-hangzhou:*:repository/juzhong/nginx" ] }, { "Action": [ "cr:Get*", "cr:List*" ], "Effect": "Allow", "Resource": [ "acs:cr:*:*:repository/juzhong" ] } ], "Version": "1" }シナリオ 3:名前空間に対するすべての権限を RAM ユーザーに付与します。
重要このシナリオは、API 操作を呼び出すことによってのみ実装できます。ユーザーが Container Registry コンソール内のすべてのリポジトリを表示できるようにするには、シナリオ 1 を参照して関連する構成を追加します。
{ "Statement": [ { "Action": [ "cr:*" ], "Effect": "Allow", "Resource": [ "acs:cr:cn-hangzhou:*:repository/juzhong", "acs:cr:cn-hangzhou:*:repository/juzhong/*" ] } ], "Version": "1" }
上記のシナリオで紹介されているスクリプトを使用してカスタムポリシーを作成し、RAM ユーザーにアタッチできます。これを行うには、次の操作を実行します。
カスタムポリシーを作成します。
Alibaba Cloud アカウントを使用して RAM コンソール にログインします。
左側のナビゲーションウィンドウで、 を選択します。
[ポリシー] ページで、[ポリシーの作成] をクリックします。
[ポリシーの作成] ページで、[JSON] タブをクリックし、コードエディタでポリシードキュメントを編集します。ポリシー構文の詳細については、「ポリシーの構造と構文」をご参照ください。
説明ポリシードキュメントを編集する際の
ActionパラメータとResourceパラメータの構成方法については、「Container Registry の認証ルール」をご参照ください。[OK] をクリックします。[ポリシーの作成] ダイアログボックスで、[ポリシー名] パラメータと [説明] パラメータを構成します。
カスタムポリシーを RAM ユーザーにアタッチします。
Alibaba Cloud アカウントを使用して RAM コンソール にログインします。
左側のナビゲーションウィンドウで、 を選択します。
[ユーザー] ページで、カスタムポリシーをアタッチする RAM ユーザーを見つけ、[権限の追加] 列の [アクション] をクリックします。
[権限の付与] パネルで、RAM ユーザーに権限を付与します。
認証スコープを選択します。
[アカウント]:権限は現在の Alibaba Cloud アカウントに付与されます。
[リソースグループ]:権限は特定のリソースグループに付与されます。
説明リソーススコープパラメータに [リソースグループ] を選択した場合は、クラウドサービスがリソースグループをサポートしていることを確認してください。詳細については、「リソースグループで動作するサービス」をご参照ください。
プリンシパルを指定します。
プリンシパルとは、権限を付与する RAM ユーザーのことです。デフォルトでは、現在の RAM ユーザーが指定されています。別の RAM ユーザーを指定することもできます。
ドロップダウンリストの [すべてのタイプ] の下にある [カスタムポリシー] をクリックし、検索ボックスにカスタムポリシー名を入力してカスタムポリシーを検索し、カスタムポリシーの名前をクリックします。
[権限の付与] をクリックします。
[閉じる] をクリックします。
Container Registry の認証ルール
ARN 形式
次の表は、RAM を使用してユーザーに権限を付与する場合の、認証ポリシーにおける Alibaba Cloud Resource Name ( ARN ) 形式について説明しています。
リソース | ARN 形式 |
リポジトリ | acs:cr:$regionid:$accountid:repository/$namespacename/$repositoryname |
次の表は、ARN 形式のパラメータについて説明しています。
パラメータ | 説明 |
regionid | リージョンの ID 。リージョン ID はアスタリスク ( * ) に置き換えることができます。 |
accountid | Alibaba Cloud アカウントの ID 。アカウント ID はアスタリスク ( * ) に置き換えることができます。 |
namespacename | 名前空間の名前。 |
repositoryname | イメージリポジトリの名前。 |