AI Gateway のサービスリンクロールは、特定の機能のために設計された事前定義済みの Resource Access Management (RAM) ロールです。このトピックでは、AI Gateway のサービスリンクロールのユースケースについて説明し、その管理方法を解説します。
これらのサービスロールのシナリオ
AliyunServiceRoleForNativeApiGw: AI Gateway は、この自動的に作成されるサービスリンクロールを使用して、Virtual Private Cloud (VPC)、Container Service for Kubernetes (ACK)、Function Compute (FC)、Enterprise Distributed Application Service (EDAS)、Microservices Engine (MSE)、Server Load Balancer (SLB)、Network Load Balancer (NLB)、Elastic Compute Service (ECS)、Application Real-Time Monitoring Service (ARMS) などの他の Alibaba Cloud サービスのリソースへのアクセス権限を取得します。
AliyunServiceRoleForNativeApiGwInvokeFC: AI Gateway は、この自動的に作成されるサービスリンクロールを使用して FC サービスを呼び出し、ゲートウェイ機能を有効にします。
AliyunServiceRoleForNativeApiGwInvokeKMS: クラウドネイティブ API ゲートウェイは、自動的に作成されるサービスリンクロール
AliyunServiceRoleForNativeApiGwInvokeKMSを使用して、Key Management Service (KMS) の呼び出しに必要なアクセス権限を取得します。
RAM ユーザーがサービスロールを使用するために必要な権限
RAM ユーザーにサービスリンクロールの作成または削除を許可するには、管理者に依頼して RAM ユーザーに管理者権限 (AliyunNativeApiGwFullAccess) を付与するか、カスタムポリシーの Action 文に次の権限を追加する必要があります。
サービスリンクロールの作成:
ram:CreateServiceLinkedRoleサービスリンクロールの削除:
ram:DeleteServiceLinkedRole
詳細については、「サービスリンクロールの作成と削除に必要な権限」をご参照ください。
権限
AliyunServiceRoleForNativeApiGw
AliyunServiceRoleForNativeApiGw のアクセス権限は、クラウドサービスによって異なります。
VPC
{
"Effect": "Allow",
"Action": [
"vpc:AllocateEipAddress",
"vpc:AllocateEipAddressPro",
"vpc:DescribeEipAddresses",
"vpc:AssociateEipAddress",
"vpc:UnassociateEipAddress",
"vpc:ReleaseEipAddress",
"vpc:ModifyEipAddressAttribute",
"vpc:ModifyBypassToaAttribute",
"vpc:AddCommonBandwidthPackageIp",
"vpc:RemoveCommonBandwidthPackageIp",
"vpc:TagResources",
"vpc:DescribeVSwitches",
"vpc:DescribeVSwitchAttributes",
"vpc:DescribeVpcs",
"vpc:CreateVSwitch",
"vpc:DescribeVpcAttribute",
"vpc:DescribeVRouters",
"vpc:DescribeRouteTables",
"vpc:DescribeRouteEntryList"
],
"Resource": "*"
}Container Service for Kubernetes
{
"Effect": "Allow",
"Action": [
"cs:DescribeClusterDetail",
"cs:DescribeClusterInnerServiceKubeconfig",
"cs:RevokeClusterInnerServiceKubeconfig",
"cs:GetUserConfig",
"cs:DescribeClusterUserKubeconfig",
"cs:GetClusterById",
"cs:GetClustersByUid",
"cs:DescribeClustersV1",
"cs:ListClusters",
"cs:GetClusters",
"cs:DescribeClusterNodePools"
],
"Resource": "*"
}Function Compute (FC)
{
"Effect": "Allow",
"Action": [
"fc:ListAliases",
"fc:ListServices",
"fc:ListServiceVersions",
"fc:ListFunctions",
"fc:ListFunctionVersions",
"fc:ListTriggers"
],
"Resource": "*"
}EDAS
{
"Effect": "Allow",
"Action": [
"edas:ReadNamespace",
"edas:ReadService",
"edas:ListUserDefineRegion"
],
"Resource": "*"
}MSE
{
"Effect": "Allow",
"Action": [
"mse:ListAnsServices",
"mse:ListEngineNamespaces",
"mse:ListClusters",
"mse:QueryConfig"
],
"Resource": "*"
}SLB
{
"Effect": "Allow",
"Action": [
"slb:SetLoadBalancerName",
"slb:CreateLoadBalancer",
"slb:AddBackendServers",
"slb:SetBackendServers",
"slb:RemoveBackendServers",
"slb:CreateLoadBalancerTCPListener",
"slb:DescribeLoadBalancerTCPListenerAttribute",
"slb:SetLoadBalancerTCPListenerAttribute",
"slb:CreateLoadBalancerHTTPListener",
"slb:DescribeLoadBalancerHTTPListenerAttribute",
"slb:SetLoadBalancerHTTPListenerAttribute",
"slb:CreateLoadBalancerHTTPSListener",
"slb:DescribeLoadBalancerHTTPSListenerAttribute",
"slb:SetLoadBalancerHTTPSListenerAttribute",
"slb:StartLoadBalancerListener",
"slb:StopLoadBalancerListener",
"slb:DeleteLoadBalancerListener",
"slb:DescribeLoadBalancers",
"slb:DescribeLoadBalancerAttribute",
"slb:DescribeHealthStatus",
"slb:CreateLoadBalancerForCloudService",
"slb:DeleteLoadBalancer",
"slb:ModifyLoadBalancerInternetSpec",
"slb:RemoveTags",
"slb:AddTags",
"slb:SetLoadBalancerUDPListenerAttribute",
"slb:CreateLoadBalancerUDPListener",
"slb:CreateVServerGroup",
"slb:DeleteVServerGroup",
"slb:SetVServerGroupAttribute",
"slb:ModifyVServerGroupBackendServers",
"slb:AddVServerGroupBackendServers",
"slb:ModifyLoadBalancerInstanceSpec",
"slb:ModifyLoadBalancerInternetSpec",
"slb:RemoveVServerGroupBackendServers",
"slb:SetLoadBalancerModificationProtection",
"slb:SetLoadBalancerDeleteProtection",
"slb:DescribeLoadBalancerUDPListenerAttribute ",
"slb:DescribeTags",
"slb:DescribeVServerGroups",
"slb:DescribeVServerGroupAttribute",
"slb:DescribeLoadBalancerListeners",
"slb:ListTagResources",
"slb:TagResources",
"slb:UntagResources"
],
"Resource": "*"
}NLB
{
"Effect": "Allow",
"Action": [
"nlb:TagResources",
"nlb:UnTagResources",
"nlb:ListTagResources",
"nlb:CreateLoadBalancer",
"nlb:DeleteLoadBalancer",
"nlb:GetLoadBalancerAttribute",
"nlb:ListLoadBalancers",
"nlb:UpdateLoadBalancerAttribute",
"nlb:UpdateLoadBalancerAddressTypeConfig",
"nlb:UpdateLoadBalancerZones",
"nlb:CreateListener",
"nlb:DeleteListener",
"nlb:ListListeners",
"nlb:UpdateListenerAttribute",
"nlb:StopListener",
"nlb:StartListener",
"nlb:GetListenerAttribute",
"nlb:GetListenerHealthStatus",
"nlb:CreateServerGroup",
"nlb:DeleteServerGroup",
"nlb:UpdateServerGroupAttribute",
"nlb:AddServersToServerGroup",
"nlb:RemoveServersFromServerGroup",
"nlb:UpdateServerGroupServersAttribute",
"nlb:ListServerGroups",
"nlb:ListServerGroupServers",
"nlb:LoadBalancerLeaveSecurityGroup",
"nlb:LoadBalancerJoinSecurityGroup",
"nlb:GetJobStatus",
"nlb:UpdateLoadBalancerProtection"
],
"Resource": "*"
}ECS
{
"Effect": "Allow",
"Action": [
"ecs:CreateSecurityGroup",
"ecs:AuthorizeSecurityGroup",
"ecs:AuthorizeSecurityGroupEgress",
"ecs:RevokeSecurityGroup",
"ecs:RevokeSecurityGroupEgress",
"ecs:DeleteSecurityGroup",
"ecs:JoinSecurityGroup",
"ecs:LeaveSecurityGroup",
"ecs:DescribeSecurityGroups",
"ecs:DescribeInstances",
"ecs:CreateNetworkInterface",
"ecs:DeleteNetworkInterface",
"ecs:DescribeNetworkInterfaces",
"ecs:CreateNetworkInterfacePermission",
"ecs:DescribeNetworkInterfacePermissions",
"ecs:DeleteNetworkInterfacePermission",
"ecs:DescribeSecurityGroupAttribute",
"ecs:AddTags",
"ecs:DescribeEipAddresses",
"ecs:DescribeNetworkInterfaceAttribute",
"ecs:ModifyNetworkInterfaceAttribute",
"ecs:AssignPrivateIpAddresses",
"ecs:UnassignPrivateIpAddresses",
"ecs:AssignIpv6Addresses",
"ecs:UnassignIpv6Addresses",
"ecs:AttachNetworkInterface",
"ecs:DetachNetworkInterface",
"ecs:ListTagResources"
],
"Resource": "*"
}ARMS
{
"Effect": "Allow",
"Action": [
"arms:OpenArmsService",
"arms:GetAlertRules",
"arms:ReportCustomIncidents",
"arms:AddPrometheusInstance",
"arms:GetAuthToken",
"arms:GetClusterAllUrl",
"arms:OpenArmsServiceSecondVersion",
"arms:CheckServiceStatus",
"arms:OpenVCluster",
"arms:GetPrometheusApiToken",
"arms:ListDashboards",
"arms:GetExploreUrl",
"arms:CreateDefaultCloudProductPrometheusAlertRule",
"arms:ListNotificationPolicies",
"arms:ListDispatchRule",
"arms:CreateDispatchRule",
"arms:CreateOrUpdateNotificationPolicy",
"arms:DescribeContactGroups",
"arms:SearchContactGroup",
"arms:CreatePrometheusAlertRule"
],
"Resource": "*"
}AliyunServiceRoleForNativeApiGwInvokeFC
AliyunServiceRoleForNativeApiGwInvokeFC には、次のアクセス権限があります。
{
"Effect": "Allow",
"Action": "fc:InvokeFunction",
"Resource": "*"
}AliyunServiceRoleForNativeApiGwInvokeKMS
AliyunServiceRoleForNativeApiGwInvokeKMS サービスリンクロールには、次のアクセス権限があります。
{
"Effect": "Allow",
"Action": [
"kms:ListKmsInstances",
"kms:ListKeys",
"kms:GenerateDataKey",
"kms:Decrypt",
"kms:CreateSecret",
"kms:DeleteSecret",
"kms:UpdateSecret",
"kms:DescribeSecret",
"kms:GetSecretValue",
"kms:PutSecretValue",
"kms:TagResource",
"kms:UntagResource"
],
"Resource": "*"
}サービスロールを表示する
サービスロールが作成された後、RAM コンソールの [ロール] ページ でロール名 (AliyunServiceRoleForNativeApiGw または AliyunServiceRoleForNativeApiGwInvokeFC) を検索して、サービスロールの次の情報を表示できます。
基本情報
AliyunServiceRoleForNativeApiGw または AliyunServiceRoleForNativeApiGwInvokeFC ロールの詳細ページの [基本情報] セクションで、ロール名、作成時刻、ロール ARN、注釈など、ロールの基本情報を表示します。
権限ポリシー
AliyunServiceRoleForNativeApiGw または AliyunServiceRoleForNativeApiGwInvokeFC ロールの詳細ページの [権限] タブで、権限ポリシー名をクリックして、ポリシーの内容とロールがアクセスできるクラウドリソースを表示します。
信頼ポリシー
AliyunServiceRoleForNativeApiGw または AliyunServiceRoleForNativeApiGwInvokeFC ロールの詳細ページの [信頼ポリシー管理] タで、信頼ポリシードキュメントを表示できます。信頼ポリシーは、RAM ロールの信頼できるエンティティを定義します。信頼できるエンティティとは、RAM ロールを偽装できる ID です。サービスリンクロールの信頼できるエンティティは Alibaba Cloud サービスであり、信頼ポリシーの
Serviceフィールドで確認できます。
サービスロールの表示方法の詳細については、「RAM ロールの情報を表示する」をご参照ください。
サービスロールを削除する
AI Gateway を使用しなくなった場合は、RAM コンソールでサービスリンクロールを手動で削除できます。
RAM コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
[ロール] ページで、検索ボックスに削除するロールの名前を入力します。たとえば、
AliyunServiceRoleForNativeApiGwと入力します。検索結果でロールを見つけ、[アクション] 列の [ロールの削除] をクリックします。
削除を確認するには、表示されるダイアログボックスにロール名を入力し、[ロールの削除] をクリックします。
AI Gateway のサービスリンクロールを削除すると、そのロールに依存する機能が期待どおりに動作しなくなります。ロールは慎重に削除してください。
よくある質問
RAM ユーザーが AI ゲートウェイ サービスロール (AliyunServiceRoleForNativeApiGw) を自動的に作成できないのはなぜですか?
RAM ユーザーには、AliyunServiceRoleForNativeApiGw を自動的に作成および削除するために必要な権限がありません。そのため、RAM ユーザーが AliyunServiceRoleForNativeApiGw を自動的に作成できない場合は、次の権限ポリシーをユーザーにアタッチする必要があります。
{
"Statement": [
{
"Action": [
"ram:CreateServiceLinkedRole"
],
"Resource": "acs:ram:*:Alibaba Cloud アカウント ID:role/*",
"Effect": "Allow",
"Condition": {
"StringEquals": {
"ram:ServiceName": [
"nativeapigw.aliyuncs.com"
]
}
}
}
],
"Version": "1"
}Alibaba Cloud アカウント ID は、Alibaba Cloud アカウントの ID に置き換えてください。
RAM ユーザーが AI ゲートウェイ サービスロール (AliyunServiceRoleForNativeApiGwInvokeFC) を自動的に作成できないのはなぜですか?
RAM ユーザーには、AliyunServiceRoleForNativeApiGwInvokeFC を自動的に作成および削除するために必要な権限がありません。そのため、RAM ユーザーが AliyunServiceRoleForNativeApiGwInvokeFC を自動的に作成できない場合は、次の権限ポリシーをユーザーにアタッチする必要があります。
{
"Statement": [
{
"Action": [
"ram:CreateServiceLinkedRole"
],
"Resource": "acs:ram:*:Alibaba Cloud アカウント ID:role/*",
"Effect": "Allow",
"Condition": {
"StringEquals": {
"ram:ServiceName": [
"invokefc.nativeapigw.aliyuncs.com"
]
}
}
}
],
"Version": "1"
}Alibaba Cloud アカウント ID は、Alibaba Cloud アカウントの ID に置き換えてください。
参照
サービスロールの詳細については、「サービスロール」をご参照ください。