必要な権限を RAM ユーザーまたは RAM ロールに付与することにより、必要に応じて Service Mesh (ASM) を使用するための権限を Resource Access Management (RAM) ユーザーまたは RAM ロールに付与できます。 承認された RAM ユーザーと RAM ロールのみが、ASM コンソールで ASM インスタンスの作成や ASM 構成の更新などの操作を実行できます。 これにより、Alibaba Cloud アカウントの AccessKey ペアの漏洩によるセキュリティリスクが排除されます。 このトピックでは、RAM ユーザーと RAM ロールに権限を付与する方法について説明します。
前提条件
RAMユーザーとRAMロールが作成されていること。詳細については、「RAM ユーザーの作成」および「信頼できるAlibaba CloudアカウントのRAMロールの作成」をご参照ください。
ポリシーの要素、構造、構文に関する基本的な知識があること。詳細については、「ポリシーの構造と構文」をご参照ください。
背景情報
RAMユーザーとRAMロールに必要な権限は、シナリオによって異なります。
RAMユーザーまたはRAMロールがASMインスタンスを管理する必要があるが、Container Service for Kubernetes (ACK) クラスタを管理する必要がない場合は、ASMインスタンスに対する権限のみをRAMユーザーまたはRAMロールに付与する必要があります。詳細については、「RAMユーザーとRAMロールへのシステムポリシーのアタッチ」および「RAMユーザーとRAMロールへのカスタムポリシーのアタッチ」をご参照ください。
RAMユーザーまたはRAMロールがASMインスタンスとACKクラスタの両方を管理する必要がある場合は、ASMインスタンスとACKクラスタに対する権限をRAMユーザーまたはRAMロールに付与する必要があります。たとえば、RAMユーザーまたはRAMロールは、ACKクラスタをASMインスタンスに追加したり、ASMインスタンスからACKクラスタを削除したりする必要があります。詳細については、「RAMユーザーとRAMロールへのシステムポリシーのアタッチ」、「RAMユーザーとRAMロールへのカスタムポリシーのアタッチ」、および「RAMを使用してクラスタとクラウド リソースへのアクセスを承認する」をご参照ください。
RAMユーザーとRAMロールへのシステムポリシーのアタッチ
デフォルトでは、ASMは2つのシステムポリシー(AliyunASMReadOnlyAccessとAliyunASMFullAccess)を作成します。これらのポリシーをRAMユーザーとRAMロールにアタッチできます。以下の部分では、2つのシステムポリシーについて説明します。
AliyunASMReadOnlyAccess
このポリシーには、ASMインスタンスに対する読み取り専用権限のみが含まれています。このポリシーをRAMユーザーにアタッチすると、RAMユーザーはASMインスタンスに関する情報を表示することのみが可能になり、ASMインスタンスの設定を変更することはできません。
AliyunASMFullAccess
このポリシーには、ASMインスタンスに対するすべての権限が含まれています。このポリシーをRAMユーザーにアタッチすると、RAMユーザーはAlibaba Cloudアカウントと同じASMインスタンスに対する権限を持ち、ASMインスタンスに対するすべての操作を実行できます。
以下の部分では、RAMユーザーまたはRAMロールにシステムポリシーをアタッチする方法について説明します。次の例では、AliyunASMReadOnlyAccessポリシーがRAMユーザーにアタッチされています。詳細については、「RAMユーザーへの権限の付与」および「RAMロールへの権限の付与」をご参照ください。
RAM 管理者として RAM コンソール にログオンします。
左側のナビゲーションペインで、 を選択します。
[ユーザー] ページで、必要な RAM ユーザーを見つけ、 列の [権限の追加]アクション をクリックします。

複数の RAM ユーザーを選択し、ページの下部にある [権限の追加] をクリックして、一度に複数の RAM ユーザーに権限を付与することもできます。
[権限の付与] パネルで、RAMユーザーに権限を付与します。
[リソーススコープ] パラメーターを構成します。
[アカウント]: 承認は現在の Alibaba Cloud アカウントに有効です。
[リソースグループ]: 承認は特定のリソースグループに有効です。
重要[リソーススコープ] パラメーターで [リソースグループ] を選択した場合は、必要なクラウドサービスがリソースグループをサポートしていることを確認してください。 詳細については、「リソースグループで動作するサービス」をご参照ください。 リソースグループに対する権限の付与方法の詳細については、「リソースグループを使用して RAM ユーザーに特定の ECS インスタンスを管理する権限を付与する」をご参照ください。
プリンシパルパラメーターを構成します。
プリンシパルとは、権限を付与する RAM ユーザーのことです。 現在の RAM ユーザーが自動的に選択されます。
システム ポリシー[すべてのタイプ] ドロップダウンリストから AliyunASMReadOnlyAccessAliyunASMReadOnlyAccess を選択し、検索ボックスに と入力し、 を選択します。
説明一度に最大 5 つのポリシーをRAMユーザーにアタッチできます。5 つ以上のポリシーをRAMユーザーにアタッチする場合は、操作を繰り返します。
[権限の付与] をクリックします。
[閉じる] をクリックします。
RAMユーザーとRAMロールへのカスタムポリシーのアタッチ
権限に対してきめ細かい制御を実施する場合は、カスタムポリシーを作成し、RAMユーザーとRAMロールにアタッチできます。
ASMインスタンスに対する権限を付与するために使用されるポリシーの作成
管理権限を持つ RAM ユーザーとして RAM コンソール にログオンします。
左側のナビゲーションウィンドウで、 を選択します。
[ポリシー] ページで、[ポリシーの作成] をクリックします。

[ポリシーの作成] ページで、[JSON] タブをクリックします。

カスタムポリシーを入力し、[OK] をクリックします。
ActionフィールドをStatementブロックで変更して、API 操作の詳細な認証を有効にできます。 この例では、制限付き権限を持つポリシーが作成されます。 このポリシーは、ロールベースアクセス制御 (RBAC) 承認権限を除く、ASM に対するすべての RAM 権限を付与します。 このポリシーがアタッチされている RAM ユーザーは、他のユーザーに RBAC 権限を付与することはできませんが、他のすべての権限を持ちます。 RAM ポリシーの構文と構造の詳細については、「ポリシーの構造と構文」をご参照ください。{ "Statement": [ { // ASMに対するすべてのアクションを許可します。 "Effect": "Allow", "Action": [ "servicemesh:Add*", "servicemesh:CRBatchDeletion", "servicemesh:Create*", "servicemesh:Delete*", "servicemesh:Describe*", "servicemesh:Enable*", "servicemesh:Disable*", "servicemesh:Get*", "servicemesh:InvokeApiServer", "servicemesh:List*", "servicemesh:Modify*", "servicemesh:Re*", "servicemesh:Run*", "servicemesh:Set*", "servicemesh:Sync*", "servicemesh:Update*", "servicemesh:Upgrade*" ], "Resource": "*" }, { // ログサービスに対するアクションを許可します。 "Effect": "Allow", "Action": [ "log:ListLogStores", "log:ListDashboard", "log:GetDashboard", "log:ListSavedSearch", "log:ListProject" ], "Resource": "*" }, { // auditログへのアクセスを許可します。 "Effect": "Allow", "Action": "log:GetLogStoreLogs", "Resource": "acs:log:*:*:project/*/logstore/audit-*" }, { // istioログへのアクセスを許可します。 "Effect": "Allow", "Action": "log:GetLogStoreLogs", "Resource": "acs:log:*:*:project/*/logstore/istio-*" }, { // servicemeshサービスにリンクされたロールの作成を許可します。 "Action": "ram:CreateServiceLinkedRole", "Resource": "*", "Effect": "Allow", "Condition": { "StringEquals": { "ram:ServiceName": "servicemesh.aliyuncs.com" } } } ], "Version": "1" }[基本情報] セクションで、[名前] フィールドにポリシー名を入力します。この例では、ポリシー名は ASMPolicy1 です。次に、[OK] をクリックします。
RAMユーザーまたはRAMロールへのカスタムポリシーのアタッチ
この例では、カスタムポリシーがRAMユーザーにアタッチされています。RAMロールにカスタムポリシーをアタッチする方法の詳細については、「RAMロールへの権限の付与」をご参照ください。
管理権限を持つ RAM ユーザーとして RAM コンソール にログオンします。
左側のナビゲーションペインで、 を選択します。
[ユーザー] ページで、必要な RAM ユーザーを見つけ、 列の [権限の追加]アクション をクリックします。

複数の RAM ユーザーを選択し、ページの下部にある [権限の追加] をクリックして、一度に複数の RAM ユーザーに権限を付与することもできます。
[権限の追加] パネルで、RAM ユーザーに権限を付与します。
[リソーススコープ] パラメーターを構成します。
[アカウント]: 承認は現在の Alibaba Cloud アカウントに有効です。
[リソースグループ]: 承認は特定のリソースグループに有効です。
重要[リソーススコープ] パラメーターで [リソースグループ] を選択した場合は、必要なクラウドサービスがリソースグループをサポートしていることを確認してください。 詳細については、「リソースグループで動作するサービス」をご参照ください。 リソースグループに対する権限の付与方法の詳細については、「リソースグループを使用して RAM ユーザーに特定の ECS インスタンスを管理する権限を付与する」をご参照ください。
プリンシパルパラメーターを構成します。
プリンシパルとは、権限を付与する RAM ユーザーのことです。 現在の RAM ユーザーが自動的に選択されます。
[ポリシー] パラメーターを構成します。
[すべてのタイプ] ドロップダウンから [カスタムポリシー] を選択します。 [ASMPolicy1] をテキストボックスに入力し、検索結果から選択します。
[権限の付与] をクリックします。
[閉じる] をクリックします。
カスタムポリシーのサンプル シナリオ
シナリオ 1:単一のASMインスタンスに対する権限の付与
次のスクリプトを使用して、単一のASMインスタンスに対する権限を付与するポリシーを作成できます。ポリシーをRAMユーザーまたはRAMロールにアタッチすると、RAMユーザーまたはRAMロールは、指定されたIDを持つASMインスタンスのみを管理できます。
ポリシーを作成する際は、スクリプト内の <ServicemeshId> を、権限を付与する ASM インスタンスの ID に置き換えてください。
{
"Statement": [
{
// 指定されたIDのASMインスタンスに対するすべてのアクションを許可します。
"Effect": "Allow",
"Action": "servicemesh:*",
"Resource": "acs:servicemesh:*:*:servicemesh/<ServicemeshId>"
},
{
// すべてのASMインスタンスを一覧表示することを許可します。
"Effect": "Allow",
"Action": "servicemesh:DescribeServiceMeshes",
"Resource": "*"
},
{
// 指定されたASMインスタンスのauditログへのアクセスを許可します。
"Effect": "Allow",
"Action": "log:GetLogStoreLogs",
"Resource": "acs:log:*:*:project/*/logstore/audit-<ServicemeshId>"
},
{
// 指定されたASMインスタンスのistioログへのアクセスを許可します。
"Effect": "Allow",
"Action": "log:GetLogStoreLogs",
"Resource": "acs:log:*:*:project/*/logstore/istio-<ServicemeshId>"
}
],
"Version": "1"
}シナリオ 2:ASMコンソールでIstioリソースに対する読み取りおよび書き込み権限を付与する
デフォルトでは、ASMによって提供されるシステム ポリシー AliyunASMReadOnlyAccess は、RAMユーザーまたはRAMロールにASMインスタンスに対する読み取り専用権限を付与します。このポリシーがアタッチされているRAMユーザーまたはRAMロールは、ASMでIstioリソースを管理できません。
次のスクリプトを使用して、Istioリソースに対する読み取りおよび書き込み権限を付与するポリシーを作成できます。ポリシーをRAMユーザーまたはRAMロールにアタッチすると、RAMユーザーまたはRAMロールはASMコンソールを使用してASMインスタンス上のIstioリソースを管理できます。ただし、RAMユーザーまたはRAMロールは、機能設定など、ASMインスタンスの他の設定を変更することはできません。
{
"Statement": [
{
// Istioリソースの読み取りと書き込みを許可します。
"Effect": "Allow",
"Action": [
"servicemesh:List*",
"servicemesh:Describe*",
"servicemesh:Get*",
"servicemesh:InvokeApiServer"
],
"Resource": "*"
},
{
// ログサービスに対するアクションを許可します。
"Effect": "Allow",
"Action": [
"log:ListLogStores",
"log:ListDashboard",
"log:GetDashboard",
"log:ListSavedSearch"
],
"Resource": "*"
},
{
// auditログへのアクセスを許可します。
"Effect": "Allow",
"Action": "log:GetLogStoreLogs",
"Resource": "acs:log:*:*:project/*/logstore/audit-*"
}
],
"Version": "1"
}シナリオ 3:RBAC承認権限の付与
次のスクリプトを使用して、RBAC承認権限を付与するポリシーを作成できます。ポリシーをRAMユーザーまたはRAMロールにアタッチすると、RAMユーザーまたはRAMロールはASMコンソールを使用して、他のRAMロールまたはRAMユーザーのRBAC権限を管理できます。ただし、RAMユーザーまたはRAMロールはASMインスタンスを管理できません。
{
"Statement": [
{
// RBAC権限の管理を許可します。
"Effect": "Allow",
"Action": [
"servicemesh:DescribeUserPermissions",
"servicemesh:GrantUserPermissions",
"servicemesh:DescribeServiceMeshes",
"servicemesh:DescribeUsersWithPermissions"
],
"Resource": "*"
},
{
// ユーザー情報の取得を許可します。
"Effect": "Allow",
"Action": "ims:ListUserBasicInfos",
"Resource": "*"
}
],
"Version": "1"
}