このトピックでは、タグを使用して RAM ユーザーの権限を管理する方法について説明します。また、タグを使用して RAM ユーザーを認証する方法についても説明します。
背景情報
タグは、クラウド リソースを識別および分類するために使用されます。Resource Access Management (RAM) は、権限ポリシーに基づいて、クラウド リソースに対する RAM ユーザーのアクセス権限と操作権限を管理します。RAM ポリシーでタグを条件として使用して、リソースに対するきめ細かいアクセス制御を実装できます。
次の図は、タグを使用して RAM ユーザーの権限を管理する方法を示しています。
次の Elastic Container Instance リソースにタグをバインドできます。エラスティック コンテナ インスタンス、イメージ キャッシュ、仮想ノード。リソースを作成または更新するときにのみ、リソースにタグをバインドできます。詳細については、タグを使用してエラスティック コンテナ インスタンスを管理する を参照してください。
構成例
シナリオ
このトピックのシナリオは、タグベースの認証を実行する方法を説明するために使用されます。
たとえば、次の図に示すように、env:test
タグが付いている Elastic Container Instance リソースに対してのみ、RAM ユーザーに権限を付与したいとします。
具体的な要件は次のとおりです。
要件 1: RAM ユーザーがリソースに
env:test
タグをバインドした場合にのみ、Elastic Container Instance リソースを正常に作成できます。要件 2: RAM ユーザーは、自身が作成した Elastic Container Instance リソースのみを操作できます。リソースには
env:test
タグが付いている必要があります。要件 3: RAM ユーザーは、自身が作成した Elastic Container Instance リソースのみを表示できます。リソースには
env:test
タグが付いている必要があります。
手順 1: カスタム ポリシーを作成し、RAM ユーザーにアタッチする
Alibaba Cloud アカウントを使用して、RAM コンソール にログオンします。
左側のナビゲーション ペインで、権限 > ポリシー を選択します。
ポリシー ページで、ポリシーの作成 をクリックします。
パラメータを構成して、カスタム ポリシーを作成します。
ポリシーのインポート タブをクリックします。
表示されるダイアログ ボックスで、[ポリシー テンプレート] ドロップダウン リストから システム ポリシー を選択し、「テンプレートのフィルタリング」検索ボックスに AliyunECIFullAccess と入力し、AliyunECIFullAccess ポリシーを選択して、インポート をクリックします。
AliyunECIFullAccess は、Elastic Container Instance リソースを管理するためのデフォルト ポリシーです。AliyunECIFullAccess には、Elastic Container Instance リソースを操作する権限、セキュリティ グループや仮想プライベート クラウド (VPC) などのリソースを照会する権限、Elastic Container Instance のサービスリンクロールを作成する権限が含まれています。
JSON タブをクリックします。
コード エディターでポリシー ドキュメントを変更し、次へ ポリシー情報の編集 をクリックします。
説明ポリシーには一連の権限が含まれています。各ポリシーには、バージョン番号と承認ステートメントが含まれています。各ステートメントには、Effect、Action、Resource、Condition の各要素が含まれています。Condition 要素はオプションです。詳細については、ポリシーの構造と構文 および ポリシー要素 を参照してください。
ポリシーの
Condition
要素に認証タグを指定して、RAM ユーザーの操作権限を制限できます。次の表に、ポリシーで指定できる条件を示します。タグベースの認証条件
説明
acs:RequestTag
API リクエストにタグが含まれている必要があることを指定します。
API リクエストにタグ関連のパラメータが含まれている場合にのみ、API リクエストで
acs:RequestTag
条件を使用できます。acs:ResourceTag
API リクエストで指定されたリソースにタグが付いている必要があることを指定します。
API リクエストにリソース ID 関連のパラメータが含まれている場合にのみ、API リクエストで
acs:ResourceTag
条件を使用できます。説明ポリシーを構成する際には、API リクエストがタグをサポートしているか、リソース ID を必要とするかに基づいて、
acs:RequestTag
またはacs:ResourceTag
条件を使用できます。詳細については、RAM ユーザーが API リクエストを開始したときの RAM ユーザーの認証 を参照してください。上記のシナリオのビジネス要件を満たすために、次のポリシーを構成できます。
要件
ポリシー
RAM ユーザーがリソースに
env:test
タグをバインドした場合にのみ、Elastic Container Instance リソースを正常に作成できます。{ "Effect": "Allow", // 許可 "Action": "eci:Create*", // ECI作成操作 "Resource": "*", // すべてのリソース "Condition": { "StringEquals": { "acs:RequestTag/env": "test" // リクエストタグ env が test と等しい } } }
RAM ユーザーは、env:test タグが付いている Elastic Container Instance リソースのみを操作できます。
{ "Effect": "Allow", // 許可 "Action": "eci:*", // すべてのECI操作 "Resource": "*", // すべてのリソース "Condition": { "StringEquals": { "acs:ResourceTag/env": "test" // リソースタグ env が test と等しい } } }
RAM ユーザーは、env:test タグが付いている Elastic Container Instance リソースのみを表示できます。
{ "Effect": "Allow", // 許可 "Action": "eci:Describe*", // ECI参照操作 "Resource": "*", // すべてのリソース "Condition": { "StringEquals": { "acs:RequestTag/env": "test" // リクエストタグ env が test と等しい } } }
次の例は、AliyunECIFullAccess によって提供される権限を含む完全なポリシーを示しています。
{ "Version": "1", "Statement": [{ "Effect": "Allow", //許可 "Action": "eci:Create*", // ECI作成操作 "Resource": "*", //すべてのリソース "Condition": { "StringEquals": { "acs:RequestTag/env": "test" // リクエストタグのenvがtestと等しい } } }, { "Effect": "Allow", //許可 "Action": "eci:*", // すべてのECI操作 "Resource": "*", // すべてのリソース "Condition": { "StringEquals": { "acs:ResourceTag/env": "test" // リソースタグのenvがtestと等しい } } }, { "Effect": "Allow", //許可 "Action": "eci:Describe*", // ECI参照操作 "Resource": "*", // すべてのリソース "Condition": { "StringEquals": { "acs:RequestTag/env": "test" // リクエストタグのenvがtestと等しい } } }, { "Action": [ "ecs:DescribeSecurityGroups" // セキュリティグループの参照 ], "Resource": "*", // すべてのリソース "Effect": "Allow" //許可 }, { "Action": [ "vpc:DescribeVSwitches", // vSwitchの参照 "vpc:DescribeVpcs", // VPCの参照 "vpc:DescribeEipAddresses" // EIPの参照 ], "Resource": "*", // すべてのリソース "Effect": "Allow" //許可 }, { "Action": "ram:CreateServiceLinkedRole", // サービスリンクロールの作成 "Resource": "*", // すべてのリソース "Effect": "Allow", //許可 "Condition": { "StringEquals": { "ram:ServiceName": [ "eci.aliyuncs.com", // ECIサービス名 "vnode.eci.aliyuncs.com" // 仮想ノードサービス名 ] } } } ] }
説明RAM ユーザーが API 操作を呼び出すことによって Elastic Container Instance リソースを操作する場合は、RAM ユーザーに AliyunECIFullAccess ポリシーによって提供される権限を付与できます。RAM ユーザーが Elastic Container Instance コンソールを使用して Elastic Container Instance リソースを操作する場合は、RAM ユーザーに AliyunECIFullAccess ポリシーによって提供される権限と、他のポリシーによって提供される権限を付与する必要があります。詳細については、RAM ユーザーに権限を付与する を参照してください。
ポリシーの名前を入力し、OK をクリックします。
カスタム ポリシーを RAM ユーザーにアタッチします。
左側のナビゲーション ペインで、ID > ユーザー を選択します。
RAM ユーザーを作成します。
管理要件に基づいて RAM ユーザーを作成します。詳細については、RAM ユーザーを作成する を参照してください。RAM ユーザーをすでに作成している場合は、この手順をスキップします。
RAM ユーザーに権限を付与します。
作成したカスタム ポリシーを RAM ユーザーにアタッチします。詳細については、RAM ユーザーに権限を付与する を参照してください。
手順 2: ポリシーが有効になっているかどうかを確認する
RAM ユーザーとして OpenAPI Explorer コンソール にログオンします。
ポリシーが有効になっているかどうかを確認します。
次のテストでは、エラスティック コンテナ インスタンスが使用されます。
エラスティック コンテナ インスタンスの作成
インスタンスの作成時に
env:test
タグをインスタンスにバインドすると、インスタンスを作成できます。インスタンスの作成時に env:test タグをインスタンスにバインドしない場合、または別のタグをインスタンスにバインドする場合は、インスタンスを作成できません。インスタンスを作成する権限がないというメッセージが表示されます。
エラスティック コンテナ インスタンスの削除
削除するインスタンスに
env:test
タグが付いている場合は、インスタンスを削除できます。削除するインスタンスに
env:test
タグが付いていない場合は、インスタンスを削除できません。インスタンスを削除する権限がないというメッセージが表示されます。
エラスティック コンテナ インスタンスの照会
env:test
タグが付いているインスタンスを指定しても、リクエストでタグを指定しない場合は、指定されたインスタンスが照会されます。リクエストで
env:test
タグが付いていないインスタンスを指定すると、照会結果は空になります。インスタンスを指定せずに、リクエストで
env:test
タグを指定すると、env:test
タグが付いているすべてのインスタンスが照会されます。インスタンスとタグを指定しないと、照会結果は空になります。
RAM ユーザーが API リクエストを開始したときの RAM ユーザーの認証
次の表に、認証タグを含むポリシーが RAM ユーザーにアタッチされた後、RAM ユーザーが API リクエストを開始したときに、システムが RAM ユーザーを認証する方法を示します。
API 操作 | 認証の説明 |
CreateContainerGroup や CreateImageCache など、リソースの作成に使用される API 操作 | API リクエストでリソース ID を指定する必要はありません。API リクエストでリソース ID が指定されていない場合、リクエストは
|
DescribeContainerGroups や DescribeImageCaches など、リソースの照会に使用される API 操作 | API 操作の要件に基づいて、API リクエストでリソース ID またはタグを指定する必要があります。リクエストは
説明 リソースの照会に使用される API 操作の場合、認証に失敗すると、システムは空の結果を返し、エラーを報告しません。 |
UpdateContainerGroup や UpdateImageCache など、リソースの更新に使用される API 操作 | API リクエストでリソース ID を指定する必要があります。リクエストは
説明 タグが更新された場合、RAM ユーザーは元のタグと新しいタグの権限を持っている必要があります。RAM ユーザーには、元のタグベースの認証条件を含むポリシーと、新しいタグベースの認証条件を含むポリシーの 2 つのカスタム ポリシーをアタッチする必要があります。 |
RestartContainerGroup や ExecContainerCommand などのその他の API 操作 | API リクエストでリソース ID を指定する必要があります。リクエストは
|