エラスティックコンテナインスタンスにタグを追加した後、インスタンスをグループ化し、タグに基づいてインスタンスに対するアクセス制御を実装できます。 このトピックでは、タグを使用して、RAM (Resource Access Management) ユーザーの操作権限を、特定のタグを持つインスタンスに制限する方法について説明します。
前提条件
RAM ユーザーを作成します。 詳細については、「RAM ユーザーの作成」をご参照ください。
背景情報
デフォルトでは、AliyunECIFullAccessシステムポリシーがアタッチされているRAMユーザーは、API操作を呼び出してすべてのエラスティックコンテナインスタンスで操作を実行できます。 RAMユーザーが特定のエラスティックコンテナインスタンスに対してのみ操作を実行できるようにする場合は、カスタムポリシーを作成してアタッチし、RAMユーザーの操作権限を、タグを指定したエラスティックコンテナインスタンスに制限することができます。
手順
RAM コンソールにログインします。
左側のナビゲーションウィンドウで、[権限]> [ポリシー] を選択します。
[ポリシー] ページで [ポリシーの作成] をクリックします。
パラメーターを設定して、カスタムポリシーを作成します。
カスタムポリシーの名前を入力します。
設定モードをスクリプトに設定します。
AliyunECIFullAccessポリシーをインポートし、ニーズに応じてポリシーを変更します。
たとえば、タグを条件として追加して、指定されたタグを持つelastic Containerインスタンスへの操作権限を制限できます。 サンプルポリシー:
{ "Version": "1", "Statement": [ { "Action": "eci:*" 、 "Resource": "*", "Effect": "Allow", "Condition": { "StringEquals": { "eci:tag/name": "eci" 、 "eci:tag/env": "test" } } }, { "Action": [ "ecs:DescribeSecurityGroups" ], "Resource": "*", "Effect":"Allow" }, { "Action": [ "vpc:DescribeVSwitches", "vpc:DescribeVpcs", "vpc:DescribeEipAddresses" ], "Resource": "*", "Effect":"Allow" }, { "アクション": "ram:CreateServiceLinkedRole" 、 "Resource": "*", "Effect": "Allow", "Condition": { "StringEquals": { "ram:ServiceName": "eci.aliyuncs.com" } } } ] }
説明1つ以上のタグを追加できます。 複数のタグを追加する場合、操作権限は、それぞれが指定されたすべてのタグを持つエラスティックコンテナインスタンスに制限されます。 たとえば、上記のポリシーでは、エラスティックコンテナインスタンスに
name:eci
タグとenv:test
タグの両方が必要であることを示しています。[O] [K] をクリックします。
左側のナビゲーションウィンドウで、[アイデンティティ]> [ユーザー] を選択します。
[ユーザー] ページでRAMユーザーを見つけ、[操作] 列の [権限の追加] をクリックします。
[権限の追加] パネルで、作成したカスタムポリシーを選択し、[OK] をクリックします。
ポリシーがRAMユーザーにアタッチされると、ユーザーはポリシーで指定されたタグを持つエラスティックコンテナインスタンスに対してのみ操作を実行できます。
カスタムポリシーが有効かどうかを確認する
カスタムポリシーが有効になった場合、RAMユーザーとして次のAPI操作を呼び出すと、異なる結果が発生します。
CreateContainerGroup
CreateContainerGroup操作を呼び出すと、リクエストにタグが含まれていない場合、またはリクエストに含まれるタグがカスタムポリシーで指定されているタグを除外している場合、認証は失敗します。
CreateContainerGroup操作を呼び出すと、リクエストに含まれるタグが完全に一致するか、カスタムポリシーで指定されたタグが含まれている場合、認証は成功します。
RestartContainerGroup、ExecContainerCommand、またはDescribeContainerLog
RestartContainerGroup、ExecContainerCommand、またはDescribeContainerLog操作を呼び出すと、リクエストに含まれるタグがカスタムポリシーで指定されたタグと一致しない場合、認証は失敗します。
RestartContainerGroup、ExecContainerCommand、またはDescribeContainerLog操作を呼び出すと、リクエストに含まれるタグがカスタムポリシーで指定されたタグと一致する場合、認証は成功します。
DescribeContainerGroups
DescribeContainerGroups操作を呼び出すためにリクエストにインスタンスIDを指定してもタグを指定しない場合、リクエストは指定されたインスタンスのタグに基づいて認証されます。 インスタンスのタグがカスタムポリシーで指定されたものと一致する場合、認証は成功します。 インスタンスのタグがカスタムポリシーで指定されたタグと一致しない場合、認証は失敗します。
DescribeContainerGroups操作を呼び出すためにリクエストにタグを指定してもインスタンスIDを指定しない場合、リクエストは指定されたタグに基づいて認証されます。 指定されたタグがカスタムポリシーで指定されたタグと一致する場合、認証は成功します。 指定されたタグがカスタムポリシーで指定されたタグと一致しない場合、認証は失敗します。
DescribeContainerGroups操作を呼び出すためにリクエストにタグとインスタンスIDを指定した場合、リクエストは指定されたインスタンスのタグに基づいて認証され、指定されたタグはフィルタ条件としてのみ使用されます。
DescribeContainerGroups操作を呼び出すためにリクエストにタグまたはインスタンスIDを指定しない場合、認証は失敗します。
説明認証が失敗した場合、操作はエラーではなく空の応答を返します。
UpdateContainerGroup
UpdateContainerGroup操作を呼び出すと、リクエストに含まれるタグがカスタムポリシーで指定されたタグと一致しない場合、認証は失敗します。
UpdateContainerGroup操作を呼び出してタグ以外のインスタンス情報を更新する場合、リクエストに含まれるタグがカスタムポリシーで指定されたタグと一致する場合、認証は成功します。
UpdateContainerGroup操作を呼び出してインスタンスタグを更新すると、指定された新しいタグに基づいてリクエストが認証されます。 新しいタグがRAMユーザーのカスタムポリシーで指定されたタグと一致する場合、認証は成功します。 新しいタグがRAMユーザーのすべてのカスタムポリシーで指定されたタグと一致しない場合、認証は失敗します。
説明インスタンスタグを更新する場合は、RAMユーザーが元のタグと新しいタグの両方に対する権限を持っていることを確認してください。 元のタグを含む1つのカスタムポリシーと、新しいタグを含む別のカスタムポリシーをRAMユーザーにアタッチする必要があります。