Serverless App Engine (SAE) は、ご利用の Alibaba Cloud サービスに代わって他の Alibaba Cloud サービスにアクセスするために、サービスリンクロール AliyunServiceRoleForSAE を使用します。このページでは、このロールの機能、付与される権限、および作成または削除方法について説明します。
ロールの機能
SAE がアプリケーションを実行する際には、自動的に他の Alibaba Cloud サービスと連携する必要があります。たとえば、アプリケーションをデプロイする際に VPC や vSwitch の詳細情報を照会したり、コンテナネットワーキング用のネットワークインターフェースをプロビジョニングしたりします。AliyunServiceRoleForSAE というサービスリンクロールにより、SAE はこれらのタスクを実行するために必要な権限を取得し、ユーザーがサービス間アクセスを手動で設定する必要がなくなります。
アタッチされたポリシー AliyunServiceRolePolicyForSAE は SAE によって事前定義されています。このポリシーは変更または削除できず、このロールに対してポリシーのアタッチやデタッチもできません。RAM におけるサービスリンクロールの仕組みについては、「サービスリンクロール」をご参照ください。
権限
このロールは、以下の機能領域において SAE に権限を付与します。
| 機能領域 | サービス | SAE の操作内容 |
|---|---|---|
| ネットワークインフラストラクチャ | ECS, VPC | アプリケーションインスタンスを仮想プライベートクラウド (VPC) に接続するための Elastic Network Interfaces (ENI) を作成・管理し、インバウンドおよびアウトバウンドトラフィックを制御するためのセキュリティグループルールを管理します。アプリケーションの作成または更新時にネットワーク構成を検証するために、vSwitch および VPC のメタデータを読み取ります。 |
| ロードバランシング | SLB | アプリケーションへのトラフィックをルーティングするために、Server Load Balancer (SLB) インスタンス、リスナー、VServer グループ、バックエンドサーバーを作成・設定します。 |
| ファイルストレージ | NAS | 共有ファイルアクセスを必要とするアプリケーション向けの永続ストレージをサポートするために、NAS ファイルシステム、マウントポイント、アクセスグループ、アクセスルールをプロビジョニング・管理します。 |
| Container Registry | CR | コンテナ化アプリケーションをデプロイする際に、Container Registry との認証を行い、コンテナイメージをプルします。 |
| ログ | Log Service | アプリケーションログを収集・転送するために、Log Service のプロジェクト、ログストア、マシングループ、および構成を作成・管理します。 |
| モニタリング | ARMS | モニタリング機能をサポートするために、ARMS からメトリックをクエリします。 |
| 自動化オペレーション | OOS | バッチ再起動やローリングデプロイなどの自動化オペレーションをサポートするために、OOS の実行およびテンプレートを作成・実行します。 |
| ID | RAM | ID および権限構成を検証するために、RAM ロール情報を読み取ります。 |
| SSL 証明書 | yundun-cert | ロードバランサー上に HTTPS リスナーを設定するために、ご利用の SSL 証明書リストおよび詳細情報を読み取ります。 |
| 課金 | BSS | リソースプロビジョニングワークフローをサポートするために、価格およびインスタンス情報をクエリします。 |
ポリシードキュメント全文
ロール名:AliyunServiceRoleForSAE
ポリシー名:AliyunServiceRolePolicyForSAE
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:CreateNetworkInterface",
"ecs:DeleteNetworkInterface",
"ecs:DescribeNetworkInterfaces",
"ecs:AttachNetworkInterface",
"ecs:DetachNetworkInterface",
"ecs:CreateNetworkInterfacePermission",
"ecs:DescribeNetworkInterfacePermissions",
"ecs:DeleteNetworkInterfacePermission",
"ecs:ModifyNetworkInterfaceAttribute",
"ecs:JoinSecurityGroup",
"ecs:LeaveSecurityGroup",
"ecs:CreateSecurityGroup",
"ecs:AuthorizeSecurityGroup",
"ecs:DescribeSecurityGroupAttribute",
"ecs:DescribeSecurityGroups",
"ecs:RevokeSecurityGroup",
"ecs:DeleteSecurityGroup",
"ecs:ModifySecurityGroupAttribute",
"ecs:AuthorizeSecurityGroupEgress",
"ecs:RevokeSecurityGroupEgress",
"ecs:ModifySecurityGroupRule",
"ecs:DescribeSecurityGroupReferences",
"ecs:ModifySecurityGroupPolicy"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"slb:AddTags",
"slb:CreateLoadBalancer",
"slb:ModifyLoadBalancerInternetSpec",
"slb:DeleteLoadBalancer",
"slb:SetLoadBalancerStatus",
"slb:SetLoadBalancerName",
"slb:DescribeLoadBalancers",
"slb:DescribeLoadBalancerAttribute",
"slb:ModifyLoadBalancerPayType",
"slb:ModifyLoadBalancerInstanceSpec",
"slb:CreateLoadBalancerHTTPListener",
"slb:CreateLoadBalancerHTTPSListener",
"slb:CreateLoadBalancerTCPListener",
"slb:CreateLoadBalancerUDPListener",
"slb:DeleteLoadBalancerListener",
"slb:StartLoadBalancerListener",
"slb:StopLoadBalancerListener",
"slb:SetLoadBalancerHTTPListenerAttribute",
"slb:SetLoadBalancerHTTPSListenerAttribute",
"slb:SetLoadBalancerTCPListenerAttribute",
"slb:SetLoadBalancerUDPListenerAttribute",
"slb:SetListenerAccessControlStatus",
"slb:DescribeLoadBalancerHTTPListenerAttribute",
"slb:DescribeLoadBalancerHTTPListenerAttributes",
"slb:DescribeLoadBalancerHTTPSListenerAttribute",
"slb:DescribeLoadBalancerTCPListenerAttribute",
"slb:DescribeLoadBalancerUDPListenerAttribute",
"slb:DescribeListenerAccessControlAttribute",
"slb:AddListenerWhiteListItem",
"slb:RemoveListenerWhiteListItem",
"slb:AddBackendServers",
"slb:RemoveBackendServers",
"slb:SetBackendServers",
"slb:DescribeHealthStatus",
"slb:UploadServerCertificate",
"slb:DeleteServerCertificate",
"slb:DescribeServerCertificates",
"slb:SetServerCertificateName",
"slb:DescribeRegions",
"slb:CreateVServerGroup",
"slb:DescribeVServerGroupAttribute",
"slb:DescribeVServerGroups",
"slb:AddVServerGroupBackendServers",
"slb:SetVServerGroupAttribute",
"slb:RemoveVServerGroupBackendServers",
"slb:DescribeRules",
"slb:SetRule",
"slb:CreateRules",
"slb:DeleteRules",
"slb:DescribeTags",
"slb:DeleteVServerGroup"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"nas:DescribeRegions",
"nas:CreateFileSystem",
"nas:DeleteFileSystem",
"nas:DescribeFileSystems",
"nas:ModifyFileSystem",
"nas:CreateMountTarget",
"nas:DeleteMountTarget",
"nas:DescribeMountTargets",
"nas:ModifyMountTarget",
"nas:CreateAccessGroup",
"nas:DeleteAccessGroup",
"nas:DescribeAccessGroups",
"nas:ModifyAccessGroup",
"nas:CreateAccessRule",
"nas:DeleteAccessRule",
"nas:DescribeAccessRules",
"nas:ModifyAccessRule",
"nas:SetUserVolumeCountLimit"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"vpc:DescribeVSwitches",
"vpc:DescribeVpcs"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"cr:GetUserInfo",
"cr:GetRegionList",
"cr:GetNamespaceList",
"cr:GetRepoListByNamespace",
"cr:GetRepoTags",
"cr:GetRepoList",
"cr:GetRepo",
"cr:GetAuthorizationToken",
"cr:PullRepository",
"cr:CreateRepository",
"cr:DeleteRepositoryTag",
"cr:PushRepository",
"cr:DeleteRepository",
"cr:UpdateRepository"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ram:GetRole"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"log:GetLogStore",
"log:ListLogStores",
"log:CreateLogStore",
"log:DeleteLogStore",
"log:UpdateLogStore",
"log:GetCursorOrData",
"log:ListShards",
"log:PostLogStoreLogs",
"log:CreateConfig",
"log:UpdateConfig",
"log:DeleteConfig",
"log:GetConfig",
"log:ListConfig",
"log:CreateMachineGroup",
"log:UpdateMachineGroup",
"log:DeleteMachineGroup",
"log:GetMachineGroup",
"log:ListMachineGroup",
"log:ListMachines",
"log:ApplyConfigToGroup",
"log:RemoveConfigFromGroup",
"log:GetAppliedMachineGroups",
"log:GetAppliedConfigs",
"log:GetLogStoreLogs",
"log:GetLogStoreHistogram",
"log:CreateProject",
"log:GetProject",
"log:GetIndex",
"log:CreateIndex",
"log:DeleteIndex",
"log:UpdateIndex",
"log:GetMachineGroups",
"log:RemoveConfigFromMachineGroup",
"log:DeleteProject"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"yundun-cert:DescribeUserCertificateList",
"yundun-cert:DescribeUserCertificateDetail"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"bss:DescribePrice",
"bss:DescribeInstances"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"arms:QueryMetric"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"oos:ListExecutions",
"oos:StartExecution",
"oos:DeleteExecutions",
"oos:CancelExecution",
"oos:GetTemplate",
"oos:CreateTemplate",
"oos:UpdateTemplate"
],
"Resource": "*",
"Effect": "Allow"
}
]
}サービスリンクロールの作成
SAE コンソールにログインすると、SAE は自動的に AliyunServiceRoleForSAE を作成します。ロールが存在しない場合、Serverless App Engine (SAE) へようこそ ダイアログボックスが表示されます。確認 をクリックしてロールを作成してください。
Serverless App Engine (SAE) へようこそ ダイアログボックスは、ロール作成を確認するまで、SAE コンソールにログインするたびに表示されます。
サービスリンクロールの削除
SAE は、ご利用の Alibaba Cloud アカウント内にアプリケーションが 1 つでも存在する場合、AliyunServiceRoleForSAE の削除を防止します。この保護機能により、アクティブなアプリケーションが実行に必要な権限を失うことを防ぎます。まずすべてのアプリケーションを削除した後、ロールを削除してください。
サービスリンクロールを削除すると、ご利用のアカウントでは SAE が動作しなくなります。再度 SAE を使用するには、SAE コンソールにログインして、「サービスリンクロールの作成」に記載されている手順でロールを再作成してください。
手順:
ご利用のアカウント内のすべての SAE アプリケーションを削除します。「アプリケーションの削除」をご参照ください。
RAM ロール
AliyunServiceRoleForSAEを削除します。「RAM ロールの削除」をご参照ください。