すべてのプロダクト
Search
ドキュメントセンター

Elastic Container Instance:タグを使用して RAM ユーザーを認証する

最終更新日:Dec 28, 2024

このトピックでは、タグを使用して 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 ユーザーにアタッチする

  1. Alibaba Cloud アカウントを使用して、RAM コンソール にログオンします。

  2. 左側のナビゲーション ペインで、権限 > ポリシー を選択します。

  3. ポリシー ページで、ポリシーの作成 をクリックします。

  4. パラメータを構成して、カスタム ポリシーを作成します。

    1. ポリシーのインポート タブをクリックします。

    2. 表示されるダイアログ ボックスで、[ポリシー テンプレート] ドロップダウン リストから システム ポリシー を選択し、「テンプレートのフィルタリング」検索ボックスに AliyunECIFullAccess と入力し、AliyunECIFullAccess ポリシーを選択して、インポート をクリックします。

      AliyunECIFullAccess は、Elastic Container Instance リソースを管理するためのデフォルト ポリシーです。AliyunECIFullAccess には、Elastic Container Instance リソースを操作する権限、セキュリティ グループや仮想プライベート クラウド (VPC) などのリソースを照会する権限、Elastic Container Instance のサービスリンクロールを作成する権限が含まれています。

    3. JSON タブをクリックします。

    4. コード エディターでポリシー ドキュメントを変更し、次へ ポリシー情報の編集 をクリックします。

      説明

      ポリシーには一連の権限が含まれています。各ポリシーには、バージョン番号と承認ステートメントが含まれています。各ステートメントには、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 ユーザーに権限を付与する を参照してください。

    5. ポリシーの名前を入力し、OK をクリックします。

  5. カスタム ポリシーを RAM ユーザーにアタッチします。

    1. 左側のナビゲーション ペインで、ID > ユーザー を選択します。

    2. RAM ユーザーを作成します。

      管理要件に基づいて RAM ユーザーを作成します。詳細については、RAM ユーザーを作成する を参照してください。RAM ユーザーをすでに作成している場合は、この手順をスキップします。

    3. RAM ユーザーに権限を付与します。

      作成したカスタム ポリシーを RAM ユーザーにアタッチします。詳細については、RAM ユーザーに権限を付与する を参照してください。

手順 2: ポリシーが有効になっているかどうかを確認する

  1. RAM ユーザーとして OpenAPI Explorer コンソール にログオンします。

  2. ポリシーが有効になっているかどうかを確認します。

    次のテストでは、エラスティック コンテナ インスタンスが使用されます。

    • エラスティック コンテナ インスタンスの作成

      • インスタンスの作成時に 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 が指定されていない場合、リクエストは acs:RequestTag ポリシー条件と照合されます。

  • リクエストにポリシー条件のタグが含まれていない場合、認証は失敗します。

  • リクエストにポリシー条件のタグと一致するタグまたはポリシー条件のタグを含むタグが含まれている場合、認証は成功します。

DescribeContainerGroups や DescribeImageCaches など、リソースの照会に使用される API 操作

API 操作の要件に基づいて、API リクエストでリソース ID またはタグを指定する必要があります。リクエストは acs:ResourceTag または acs:RequestTag ポリシー条件と照合されます。

  • リクエストでリソース ID とタグを指定し、指定されたリソースのタグが acs:ResourceTag ポリシー条件のタグと一致するか、指定されたタグが acs:RequestTag ポリシー条件のタグと一致する場合、認証は成功します。

  • リソース ID を指定しても、リクエストでタグを指定せず、指定されたリソースのタグが acs:ResourceTag ポリシー条件のタグと一致する場合、認証は成功します。

  • タグを指定しても、リクエストでリソース ID を指定せず、指定されたタグが acs:RequestTag ポリシー条件のタグと一致する場合、認証は成功します。

  • リクエストでリソース ID とタグが指定されていない場合、認証は失敗します。

説明

リソースの照会に使用される API 操作の場合、認証に失敗すると、システムは空の結果を返し、エラーを報告しません。

UpdateContainerGroup や UpdateImageCache など、リソースの更新に使用される API 操作

API リクエストでリソース ID を指定する必要があります。リクエストは acs:ResourceTag ポリシー条件と照合されます。

  • リクエストでタグを指定せず、指定されたリソースのタグが acs:ResourceTag ポリシー条件のタグと一致する場合、認証は成功します。

  • リクエストでタグを指定し、指定されたリソースのタグが acs:ResourceTag ポリシー条件のタグと一致し、指定されたタグの権限が含まれている場合、認証は成功します。

説明

タグが更新された場合、RAM ユーザーは元のタグと新しいタグの権限を持っている必要があります。RAM ユーザーには、元のタグベースの認証条件を含むポリシーと、新しいタグベースの認証条件を含むポリシーの 2 つのカスタム ポリシーをアタッチする必要があります。

RestartContainerGroup や ExecContainerCommand などのその他の API 操作

API リクエストでリソース ID を指定する必要があります。リクエストは acs:ResourceTag ポリシー条件と照合されます。

  • 指定されたリソースのタグが acs:ResourceTag ポリシー条件のタグと一致しない場合、認証は失敗します。

  • 指定されたリソースのタグが acs:ResourceTag ポリシー条件のタグと一致する場合、認証は成功します。