Microservices Engine(MSE)のシステムポリシーが要件を満たせない場合は、最小権限の原則を実装するためにカスタムポリシーを作成できます。カスタムポリシーを使用すると、権限をきめ細かく制御し、リソースアクセスセキュリティを向上させることができます。このトピックでは、MSE のカスタムポリシーの使用方法と、カスタムポリシーの例について説明します。
カスタムポリシーとは
Resource Access Management(RAM)ポリシーは、システムポリシーとカスタムポリシーに分類されます。ビジネス要件に基づいてカスタムポリシーを管理できます。
カスタムポリシーを作成した後、そのポリシーを RAM ユーザー、RAM ユーザーグループ、または RAM ロールにアタッチする必要があります。これにより、ポリシーで指定された権限をプリンシパルに付与できます。
プリンシパルにアタッチされていない RAM ポリシーは削除できます。RAM ポリシーがプリンシパルにアタッチされている場合は、RAM ポリシーを削除する前に、プリンシパルから RAM ポリシーをデタッチする必要があります。
カスタムポリシーはバージョン管理をサポートしています。RAM が提供するバージョン管理メカニズムに基づいて、カスタムポリシーのバージョンを管理できます。
関連情報
ビジュアルエディタータブでのカスタムポリシーの作成
管理権限を持つ RAM ユーザーとして RAM コンソール にログオンします。
左側のナビゲーションペインで、 を選択します。
[ポリシー] ページで、[ポリシーの作成] をクリックします。
[ポリシーの作成] ページで、[ビジュアルエディター] タブをクリックします。
ポリシーを設定します。
[効果] セクションで、[許可] または [拒否] を選択します。
[サービス] セクションで、Alibaba Cloud サービスを選択します。
説明選択できる Alibaba Cloud サービスは、[サービス] セクションに表示されます。
[アクション] セクションで、[すべてのアクション] または [アクションを選択] を選択します。
システムは、[サービス] セクションで選択した Alibaba Cloud サービスに基づいて設定できるアクションを表示します。[アクションを選択] を選択した場合は、アクションを選択する必要があります。
[リソース] セクションで、[すべてのリソース] または [指定されたリソース] を選択します。
システムは、[アクション] セクションで選択したアクションに基づいて設定できるリソースを表示します。[指定されたリソース] を選択した場合は、[リソースの追加] をクリックして、1 つ以上の Alibaba Cloud Resource Name(ARN)を設定する必要があります。また、[すべて一致] をクリックして、選択した各アクションのすべてのリソースを選択することもできます。
説明アクションに必要なリソース ARN には、[必須] のタグが付けられています。[必須] のタグが付いているリソース ARN を設定することを強くお勧めします。これにより、カスタムポリシーが期待どおりに有効になります。
[条件] セクションで、[条件の追加] をクリックして条件を設定します。
条件には、Alibaba Cloud の共通条件とサービス固有の条件が含まれます。システムは、選択した Alibaba Cloud サービスとアクションに基づいて設定できる条件を表示します。条件キーを選択し、[演算子] パラメーターと [値] パラメーターを設定するだけです。
[ステートメントの追加] をクリックし、上記の手順を繰り返して複数のカスタムポリシーステートメントを設定します。
カスタムポリシーの内容を確認し、最適化します。
基本的な最適化
システムはポリシーステートメントを自動的に最適化します。システムは、基本的な最適化中に次の操作を実行します。
不要な条件を削除します。
不要な配列を削除します。
(オプション)高度な最適化
[オプション:高度な最適化] にポインターを移動し、[実行] をクリックします。システムは、高度な最適化中に次の操作を実行します。
アクションと互換性のないリソースまたは条件を分割します。
リソースを絞り込みます。
ポリシーステートメントの重複を削除またはマージします。
[名前] パラメーターと [説明] パラメーターを設定します。
[OK] をクリックします。
マイクロサービスレジストリの一般的なカスタムポリシーの例
特定のインスタンスのサービスに対する読み取り専用権限をユーザーに付与します。
{ "Version": "1", "Statement": [ { "Action": [ "mse:QueryNacosNaming" ], "Resource": [ "acs:mse:*:*:instance/${instanceId1}", "acs:mse:*:*:instance/${instanceId2}" ], "Effect": "Allow" } ] }特定のインスタンスのサービスを読み取りおよび変更する権限をユーザーに付与します。
{ "Version": "1", "Statement": [ { "Action": [ "mse:QueryNacosNaming", "mse:UpdateNacosNaming" ], "Resource": [ "acs:mse:*:*:instance/${instanceId1}", "acs:mse:*:*:instance/${instanceId2}" ], "Effect": "Allow" } ] }説明${instanceId1} と ${instanceId2} はインスタンス ID を示します。
インスタンスの特定の名前空間にあるサービスに対する読み取り専用権限をユーザーに付与します。
{ "Statement": [ { "Effect": "Allow", "Action": "mse:QueryNacosNaming", "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}" // 特定のインスタンスの特定の名前空間内のサービスに対する読み取り専用権限を許可します。 } ], "Version": "1" }インスタンスの特定の名前空間にある ${group} グループのサービスを読み取りおよび変更する権限をユーザーに付与します。
{ "Statement": [ { "Effect": "Allow", "Action": [ "mse:QueryNacosNaming", "mse:UpdateNacosNaming" ], "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}/${group}" // 特定のインスタンスの特定の名前空間の ${group} グループのサービスに対する読み取り/書き込み権限を許可します。 } ], "Version": "1" }${group} グループの ${serviceName} サービスに対する読み取り専用権限をユーザーに付与します。
{ "Statement": [ { "Effect": "Allow", "Action": "mse:QueryNacosNaming", "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}/${group}/naming/${serviceName}" // ${group} グループの ${serviceName} サービスに対する読み取り専用権限を許可します。 } ], "Version": "1" }${group} グループの ${serviceName} サービスを読み取りおよび変更する権限をユーザーに付与します。
{ "Statement": [ { "Effect": "Allow", "Action": [ "mse:QueryNacosNaming", "mse:UpdateNacosNaming" ], "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}/${group}/naming/${serviceName}" // ${group} グループの ${serviceName} サービスに対する読み取り/書き込み権限を許可します。 } ], "Version": "1" }
マイクロサービスガバナンスの一般的なカスタムポリシーの例
すべてのアプリケーションに対する読み取り専用権限を付与する
企業の従業員がアプリケーションの主要な情報を表示できるようにするには、企業は従業員にすべてのアプリケーションに対する読み取り専用権限を付与できます。
たとえば、企業は Alibaba Cloud アカウントを使用して、RAM ユーザーに現在の Alibaba Cloud アカウントのすべてのマイクロサービスガバナンス対応アプリケーションに対する読み取り専用権限を付与します。
次のコードは、ポリシーの例を示しています。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"mse:QueryNamespace",
"mse:GetApplicationListWithMetircs",
"mse:ListNamespaces",
"mse:GetEventFilterOptions",
"mse:ListEventRecords",
"mse:GetEventDetail",
"mse:FetchLogConfig",
"mse:QueryBusinessLocations",
"mse:GetApplicationInstanceList",
"mse:listGrayTag",
"mse:QueryServiceDetailWithMetrics",
"mse:GetEventDetail",
"mse:ListEventsPage",
"mse:ListEventsByType",
"mse:GetApplicationTagList"
],
"Resource": "acs:mse:*:*:*" // すべてのマイクロサービスガバナンス対応アプリケーションに対する読み取り専用権限
},
{
"Effect": "Allow",
"Action": "mse:GetApplicationList",
"Resource": "acs:mse:*:*:namespace/${ns}" // 特定の名前空間のすべてのマイクロサービスガバナンス対応アプリケーションに対する読み取り専用権限
}
]
}RAM ユーザーにアプリケーションに対するすべての操作権限を付与する
企業のアプリケーションの所有者として、アプリケーションに対するすべての操作権限が付与される必要があります。権限は、管理するアプリケーションの範囲に厳密に制限されています。
たとえば、企業は Alibaba Cloud アカウントを使用して、RAM ユーザーに次の権限を付与します。
現在の Alibaba Cloud アカウントのすべてのマイクロサービスガバナンス対応アプリケーションに対する読み取り専用権限。
特定のマイクロサービスガバナンス対応アプリケーションに対するすべての権限。
次のコードは、ポリシーの例を示しています。
{
"Version": "1",
"Statement": [
// 特定のマイクロサービスガバナンス対応アプリケーションに対するすべての権限
{
"Effect": "Allow",
"Action": "mse:*",
"Resource": "acs:mse:*:*:namespace/${ns}/application/${appName}" // 特定のマイクロサービスガバナンス対応アプリケーションに対するすべての権限
},
// すべてのマイクロサービスガバナンス対応アプリケーションに対する読み取り専用権限
{
"Effect": "Allow",
"Action": [
"mse:QueryNamespace",
"mse:GetApplicationListWithMetircs",
"mse:ListNamespaces",
"mse:GetEventFilterOptions",
"mse:ListEventRecords",
"mse:GetEventDetail",
"mse:FetchLogConfig",
"mse:QueryBusinessLocations",
"mse:GetApplicationInstanceList",
"mse:listGrayTag",
"mse:QueryServiceDetailWithMetrics",
"mse:GetEventDetail",
"mse:ListEventsPage",
"mse:ListEventsByType",
"mse:GetApplicationTagList"
],
"Resource": "acs:mse:*:*:*" // すべてのマイクロサービスガバナンス対応アプリケーションに対する読み取り専用権限
},
{
"Effect": "Allow",
"Action": "mse:GetApplicationList",
"Resource": "acs:mse:*:*:namespace/${ns}" // 特定の名前空間のすべてのマイクロサービスガバナンス対応アプリケーションに対する読み取り専用権限
}
]
}名前空間内のすべてのアプリケーションに対する操作権限を付与する
企業のテストエンジニアとして、テスト環境(テスト名前空間)内のすべてのアプリケーションに対する操作権限が付与される必要があります。権限は、テスト環境(テスト名前空間)の範囲に厳密に制限されています。
たとえば、企業は Alibaba Cloud アカウントを使用して、RAM ユーザーに次の権限を付与します。
現在の Alibaba Cloud アカウントのすべてのマイクロサービスガバナンス対応アプリケーションに対する読み取り専用権限。
特定のマイクロサービスガバナンス名前空間内のアプリケーションに対する読み取り/書き込み権限。
次のコードは、ポリシーの例を示しています。
{
"Version": "1",
"Statement": [
// 特定のマイクロサービスガバナンス名前空間内のアプリケーションに対するすべての権限
{
"Effect": "Allow",
"Action": "mse:*",
"Resource": "acs:mse:*:*:namespace/${ns}/application/*" // 特定のマイクロサービスガバナンス名前空間内のアプリケーションに対するすべての権限
},
// すべてのマイクロサービスガバナンス対応アプリケーションに対する読み取り専用権限
{
"Effect": "Allow",
"Action": [
"mse:QueryNamespace",
"mse:GetApplicationListWithMetircs",
"mse:ListNamespaces",
"mse:GetEventFilterOptions",
"mse:ListEventRecords",
"mse:GetEventDetail",
"mse:FetchLogConfig",
"mse:QueryBusinessLocations",
"mse:GetApplicationInstanceList",
"mse:listGrayTag",
"mse:QueryServiceDetailWithMetrics",
"mse:GetEventDetail",
"mse:ListEventsPage",
"mse:ListEventsByType",
"mse:GetApplicationTagList",
"mse:QueryAllSwimmingLaneGroup",
"mse:QueryAllSwimmingLane",
"mse:ListAppBySwimmingLaneGroupTags",
"mse:ListAppBySwimmingLaneGroupTag",
"mse:QuerySwimmingLaneById",
"mse:GetTagsBySwimmingLaneGroupId",
"mse:ListSwimmingLaneGateway",
"mse:ListSwimmingLaneGatewayRoute",
"mse:ListAuthPolicy",
"mse:GetServiceList",
"mse:GetServiceListPage"
],
"Resource": "acs:mse:*:*:*" // すべてのマイクロサービスガバナンス対応アプリケーションに対する読み取り専用権限
},
// 特定のマイクロサービスガバナンス名前空間内のアプリケーションに対するすべての権限
{
"Effect": "Allow",
"Action": [
"mse:GetApplicationList",
"mse:CreateOrUpdateSwimmingLaneGroup",
"mse:CreateOrUpdateSwimmingLane",
"mse:DeleteSwimmingLaneGroup",
"mse:DeleteSwimmingLaneGroup",
"mse:DeleteSwimmingLane"
],
"Resource": "acs:mse:*:*:namespace/${ns}" // 特定のマイクロサービスガバナンス名前空間内のアプリケーションに対するすべての権限
}
]
}クラウドネイティブゲートウェイの一般的なカスタムポリシーの例
ユーザーまたはロールにすべてのリソースに対する権限を付与する
RAM ユーザーまたはロールにすべてのクラウドネイティブゲートウェイに対する操作権限を付与する場合、次のシステムポリシーを RAM ユーザーまたはロールにアタッチできます。
読み取り専用権限:AliyunMSEReadOnlyAccess
読み取り/書き込み権限:AliyunMSEFullAccess
ユーザーまたはロールに特定のゲートウェイリソースに対する権限を付与する
RAM ユーザーまたはロールに特定のゲートウェイに対する操作権限を付与する場合、リソースレベルの権限を RAM ユーザーまたはロールに付与できます。
例 1:RAM ユーザーに gw-8090caa2a3ab447a8bc5fdf3******** という名前のクラウドネイティブゲートウェイに対する読み取り専用権限を付与します。
{ "Version": "1", "Statement": [ { // ゲートウェイに対する読み取り専用権限 "Action": [ "mse:Query*", "mse:List*", "mse:Get*", "mse:Select*", "mse:Pull*", "mse:GatewayBlackWhite*", "mse:GatewayHealthCheckList", "mse:GatewayQueryMonitor", "mse:UploadWasmFile" ], "Resource": "acs:mse:*:*:instance/gw-8090caa2a3ab447a8bc5fdf3********", // 特定のゲートウェイインスタンス "Effect": "Allow" }, { // ゲートウェイに対する読み取り専用権限 "Action": [ "mse:QueryDefaultAlertStatus", "mse:ListGatewayZone", "mse:ListUpgradableGatewayVersions", "mse:ListTagResources", "mse:ListGatewayIngressMigrateTask", "mse:ListEventRecords", "mse:GetEventFilterOptions", "mse:GetEventDetail", "mse:GetGatewaySelection", "mse:GetGatewayAlarms", "mse:GetGatewayMigrateNamespacedServices", "mse:GetGatewayIngressMigrateTaskDetail", "mse:GetPluginGuide", "mse:GetRegExpCheck", "mse:GetRegExpTest", "mse:CheckPluginLua" ], "Resource": "acs:mse:*:*:*", "Effect": "Allow" }, { // ログサービスに対する権限 "Action": [ "log:DescribeService", "log:ListProject", "log:GetProductDataCollection" ], "Resource": "*", "Effect": "Allow" }, { // ARMS に対する権限 "Action": [ "arms:SearchContactGroup" ], "Resource": "*", "Effect": "Allow" } ] }例 2:RAM ユーザーに gw-8090caa2a3ab447a8bc5fdf3******** という名前のクラウドネイティブゲートウェイに対する読み取り/書き込み権限を付与します。
{ "Version": "1", "Statement": [ { // ゲートウェイに対するすべての権限 "Action": [ "mse:*" ], "Resource": "acs:mse:*:*:instance/gw-8090caa2a3ab447a8bc5fdf3********", // 特定のゲートウェイインスタンス "Effect": "Allow" }, { // ゲートウェイに対する読み取り/書き込み権限 "Action": [ "mse:QueryDefaultAlertStatus", "mse:CreateDefaultAlert", "mse:ListGatewayZone", "mse:ListUpgradableGatewayVersions", "mse:ListEventRecords", "mse:GetEventFilterOptions", "mse:GetEventDetail", "mse:GetGatewaySelection", "mse:GetGatewayAlarms", "mse:GetGatewayMigrateNamespacedServices", "mse:GetPluginGuide", "mse:GetRegExpCheck", "mse:GetRegExpTest", "mse:CheckPluginLua", "mse:*TagResources", "mse:*CustomPlugin", "mse:*GatewayIngressMigrateTask*" ], "Resource": "acs:mse:*:*:*", "Effect": "Allow" }, { // ログサービスに対する権限 "Action": [ "log:DescribeService", "log:ListProject", "log:GetProductDataCollection", "log:OpenProductDataCollection" ], "Resource": "*", "Effect": "Allow" }, { // ARMS に対する権限 "Action": [ "arms:SearchContactGroup" ], "Resource": "*", "Effect": "Allow" } ] }
使用上の注意
上記の権限では、MSE コンソールで必要な操作のみを実行できます。クラウドネイティブゲートウェイの特定の機能は、他のクラウドサービスに依存します。他のクラウドサービスの権限設定ドキュメントに基づいて、RAM ユーザーまたはロールの権限を設定できます。これにより、RAM ユーザーまたはロールはクラウドネイティブゲートウェイのすべての機能を使用できます。次の表に、クラウドネイティブゲートウェイが依存するクラウドサービスと関連するクラウドネイティブゲートウェイモジュール間のマッピングを示します。
Alibaba Cloud サービス | クラウドネイティブゲートウェイモジュール | 関連情報 |
ログサービス |
| |
ARMS |
|