Alibaba Cloudは、Function Computeの権限を管理するためのRAM (Resource Access Management) を提供しています。 RAMを使用する場合、Alibaba CloudアカウントのAccessKeyペアを他のユーザーと共有する必要はありません。 代わりに、最低限必要な権限のみを付与できます。 AccessKeyペアには、AccessKey IDとAccessKeyシークレットが含まれます。 このトピックでは、システムポリシーやカスタムポリシーなど、Function Computeのポリシーについて説明します。 このトピックでは、サンプルのカスタムポリシーも提供します。
タイプ
システムポリシー
初めてRAMユーザーとしてFunction Computeコンソールにログインする前に、Alibaba Cloudアカウントを使用して、Function Computeにアクセスするためのシステムポリシーと他のAlibaba CloudサービスにアクセスするためのシステムポリシーをRAMユーザーにアタッチする必要があります。 RAMユーザーとしてFunction Computeを含むAlibaba Cloudサービスにアクセスできるのは、システムポリシーがRAMユーザーにアタッチされた場合のみです。
システムポリシーには、次の種類があります。
Function Computeのシステムポリシー
ポリシー
説明
AliyunFCReadOnlyAccess
すべてのFunction Computeリソースに対する読み取り専用権限。
AliyunFCInvocationAccess
すべての関数を呼び出す権限。
AliyunFCFullAccess
すべてのFunction Computeリソースを管理する権限。
説明AliyunFCFullAccessポリシーで定義されたすべてのFunction Computeリソースを管理する権限には、AliyunFCInvocationAccessポリシーで定義されたすべての関数を呼び出す権限と、AliyunFCReadOnlyAccessポリシーで定義されたすべてのFunction Computeリソースに対する読み取り専用権限が含まれます。 AliyunFCFullAccessポリシーをRAMユーザーにアタッチした後、AliyunFCInvocationAccessまたはAliyunFCReadOnlyAccessポリシーをRAMユーザーにアタッチする必要はありません。
他のAlibaba Cloudサービスのシステムポリシー
Alibaba Cloudサービス
システムポリシー
Log Service
AliyunLogReadOnlyAccess: すべてのLog Serviceリソースに対する読み取り専用権限。
AliyunLogFullAccess: すべてのLog Serviceリソースを管理するための権限。
説明RAMユーザーとしてLog Serviceにアクセスするには、最小権限の原則に基づいて、AliyunLogReadOnlyAccessポリシーのみをRAMユーザーにアタッチする必要があります。
Object Storage Service (OSS)
AliyunOSSReadOnlyAccess: すべてのOSSリソースに対する読み取り専用権限。
AliyunOSSFullAccess: すべてのOSSリソースを管理するための権限。
CloudMonitor
AliyunCloudMonitorReadOnlyAccess: すべてのCloudMonitorリソースに対する読み取り専用権限。
SSL Certificates Service
AliyunYundunCertReadOnlyAccess: すべてのSSL証明書サービスリソースに対する読み取り専用権限。
Virtual Private Cloud
AliyunVPCReadOnlyAccess: すべてのVPCリソースに対する読み取り専用権限。
Elastic Compute Service (ECS)
AliyunECSReadOnlyAccess: すべてのECSリソースに対する読み取り専用権限。
Resource Access Management (RAM)
AliyunRAMReadOnlyAccess: ユーザー、グループ、および権限情報を表示する権限を含む、すべてのRAMリソースに対する読み取り専用権限。
AliyunRAMFullAccess: すべてのRAMリソースを管理するための権限 (ユーザーの管理と権限付与の権限を含む) 。
説明RAMユーザーにAliyunRAMReadOnlyAccessポリシーのみをアタッチする場合、RAMユーザーとしてコンソールで取得できるのはロールのリストのみです。 RAMユーザーとして他の操作を実行する必要がある場合は、AliyunRAMFullAccessポリシーをRAMユーザーにアタッチする必要があります。
Application Real-Time Monitoring Service
AliyunARMSReadOnlyAccess: ARMSリソースに対する読み取り専用権限。
AliyunARMSFullAccess: ARMSリソースを管理するための権限。
説明RAMユーザーとしてARMSにアクセスするには、最小権限の原則に基づいて、AliyunARMSReadOnlyAccessポリシーのみをRAMユーザーにアタッチする必要があります。
Message Service (MNS)
AliyunMNSReadOnlyAccess: すべてのMNSリソースに対する読み取り専用権限。
AliyunMNSFullAccess: すべてのMNSリソースを管理するための権限。
説明RAMユーザーとしてMNSにアクセスするには、最小権限の原則に基づいて、AliyunMNSReadOnlyAccessポリシーのみをRAMユーザーにアタッチする必要があります。
EventBridge
AliyunEventBridgeReadOnlyAccess: すべてのEventBridgeリソースに対する読み取り専用権限。
AliyunEventBridgeFullAccess: すべてのEventBridgeリソースを管理するための権限。
説明RAMユーザーとしてEventBridgeにアクセスするには、最小権限の原則に基づいて、AliyunEventBridgeReadOnlyAccessポリシーのみをRAMユーザーにアタッチする必要があります。
Message Queue for Apache RocketMQ
AliyunMQReadOnlyAccess: Apache RocketMQリソースのすべてのMessage Queueに対する読み取り専用権限。
AliyunMQFullAccess: Apache RocketMQリソースのすべてのMessage Queueを管理するための権限。
説明RAMユーザーとしてApache RocketMQのMessage Queueにアクセスするには、最小権限の原則に基づいて、AliyunMQReadOnlyAccessポリシーのみをRAMユーザーにアタッチする必要があります。
Container Registry
AliyunContainerRegistryReadOnlyAccess: すべてのContainer Registryリソースに対する読み取り専用権限。
AliyunContainerRegistryFullAccess: すべてのContainer Registryリソースを管理するための権限。
説明RAMユーザーとしてContainer Registryにアクセスするには、最小権限の原則に基づいて、AliyunContainerRegistryReadOnlyAccessポリシーのみをRAMユーザーにアタッチする必要があります。
Apsara File Storage NAS
AliyunNASReadOnlyAccess: すべてのNASリソースに対する読み取り専用権限。
AliyunNASFullAccess: すべてのNASリソースを管理するための権限。
説明RAMユーザーとしてNASにアクセスするには、最小権限の原則に基づいて、AliyunNASReadOnlyAccessポリシーのみをRAMユーザーにアタッチする必要があります。
ApsaraDB RDS
AliyunRDSReadOnlyAccess: すべてのApsaraDB RDSリソースに対する読み取り専用権限。
AliyunRDSFullAccess: すべてのApsaraDB RDSリソースを管理するための権限。
説明RAMユーザーとしてApsaraDB RDSにアクセスするには、最小権限の原則に基づいて、AliyunRDSReadOnlyAccessポリシーのみをRAMユーザーにアタッチする必要があります。
Apsara Devops
AliyunRDCReadOnlyAccess: Apsara DevOps RDCリソースに対する読み取り専用権限。
AliyunRDCFullAccess: Apsara DevOps RDCリソースを管理するための権限。
説明RAMユーザーとしてApsaraDB RDSにアクセスするには、最小権限の原則に基づいて、AliyunRDCReadOnlyAccessポリシーのみをRAMユーザーにアタッチする必要があります。
たとえば、Alibaba Cloudアカウントを使用してAliyunOSSFullAccessポリシーをRAMユーザーにアタッチするなど、トリガーに関連する権限を付与した後にOSSイベントトリガーをRAMユーザーとして更新できない場合は、Alibaba Cloudアカウントを使用して次のカスタムポリシーをRAMユーザーにアタッチします。 カスタムポリシーがアタッチされた後、OSSイベントトリガーをRAMユーザーとして更新できます。
{
"Statement": [
{
"Action": [
"ram:PassRole"
],
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "1"
}
カスタムポリシー
Function Computeは、システムポリシーに加えて、RAMユーザーにきめ細かい権限を付与できるカスタムポリシーをサポートしています。 ポリシーの要素の詳細については、「ポリシー要素」をご参照ください。
リソース | Action | 説明 |
acs:fc:<region >:< account-id>:services/<serviceName> | fc:GetService | 指定されたサービス。 |
fc:UpdateService | ||
fc:DeleteService | ||
acs:fc:<region >:< account-id>:services/* | fc:CreateService | すべてのサービス。 |
fc:ListServices | ||
acs:fc:<region >:< account-id>:services/<serviceName> 。<qualifier> | fc:GetService | 指定されたバージョンのサービス。 |
acs:fc:<region >:< account-id>:services/<serviceName>/functions/<functionName> | fc:GetFunction | 指定されたサービスで指定された関数。 |
fc:UpdateFunction | ||
fc:DeleteFunction | ||
fc:InvokeFunction | ||
acs:fc:<region >:< account-id>:services/<serviceName>/functions/* | fc:CreateFunction | 指定されたサービスのすべての関数。 |
fc:ListFunctions | ||
acs:fc:<region >:< account-id>:services/<serviceName>.*/functions/<functionName> | fc:GetFunction | 指定されたサービスのすべてのバージョンのすべての関数。 |
fc:UpdateFunction | ||
fc:DeleteFunction | ||
fc:InvokeFunction | ||
fc:PutProvisionConfig | ||
fc:GetProvisionConfig | ||
fc:PutFunctionOnDemandConfig | ||
fc:DeleteFunctionOnDemandConfig | ||
fc:PutFunctionAsyncInvokeConfig | ||
fc:DeleteFunctionAsyncInvokeConfig | ||
fc:GetFunctionAsyncInvokeConfig | ||
fc:GetFunctionOnDemandConfig | ||
acs:fc:<region >:< account-id>:services/<serviceName>/functions/<functionName>/triggers/<triggerName> | fc:GetTrigger | 指定されたサービス内の指定された関数の指定されたトリガー。 |
fc:UpdateTrigger | ||
fc:DeleteTrigger | ||
acs:fc:<region >:< account-id>:services/<serviceName>/functions/<functionName>/triggers/* | fc:CreateTrigger | 指定されたサービス内の指定された関数のすべてのトリガー。 |
fc:ListTriggers | ||
acs:fc:<region >:< account-id>:services/<serviceName>/versions | fc:PublishServiceVersion | すべてのサービスバージョン。 |
fc:ListServiceVersions | ||
acs:fc:<region >:< account-id>:services/<serviceName>/versions/<versionId> | fc:DeleteServiceVersion | 指定されたサービスバージョン。 |
acs:fc:<region >:< account-id>:services/<serviceName>/aliases/* | fc:CreateAlias | すべてのサービスのエイリアス。 |
fc:ListAliases | ||
acs:fc:<region >:< account-id>:services/<serviceName>/aliases/<aliasName> | fc:GetAlias | 指定されたサービスエイリアス。 |
fc:UpdateAlias | ||
fc:DeleteAlias | ||
acs:fc:<region >:< account-id>:custom-domains/* | fc:CreateCustomDomain | すべてのカスタムドメイン名。 |
fc:ListCustomDomains | ||
acs:fc:<region >:< account-id>: カスタムドメイン /<domainName> | fc:GetCustomDomain | 指定されたカスタムドメイン名。 |
fc:UpdateCustomDomain | ||
fc:DeleteCustomDomain | ||
acs:fc:<region >:< account-id>:tag | fc:TagResource | 単一のタグ。 |
fc:GetResourceTags | ||
fc:UnTagResource | ||
acs:fc:<region >:< account-id>:tags/* | fc:ListTaggedResources | すべてのタグ。 |
acs:fc:<region >:< account-id>:account-settings/* | fc:GetAccountSettings | アカウントの設定。 |
acs:fc:<region >:< account-id>:layerarn/<arn> | fc:GetLayerVersionByArn | すべてのレイヤー。 |
acs:fc:<region >:< account-id>:layers/* | fc:ListLayers | |
acs:fc:<region >:< account-id>:layers/<layerName>/versions/<versionId> | fc:PublishLayerAsPublic | |
acs:fc:<region >:< account-id>:layers/<layerName>/versions/* | fc:ListLayerVersions | すべてのレイヤーバージョン。 |
fc:CreateLayerVersion | ||
acs:fc:<region >:< account-id>:layers/<layerName>/versions/<versionId> | fc:GetLayerVersion | |
fc:DeleteLayerVersion | ||
acs:fc:<region >:< account-id>:on-demand-configs/* | fc:ListOnDemandConfigs | オンデマンド設定。 |
acs:fc:<region >:< account-id>:provision-configs/* | fc:ListProvisionConfigs | プロビジョニングされた設定。 |
acs:fc:<region >:< account-id>:services/<serviceName>/binding | fc:DeleteVpcBinding | VPC設定。 |
acs:fc:<region >:< account-id>:services/<serviceName>/binding/* | fc:CreateVpcBinding | |
fc:ListVpcBindings | ||
acs:fc:<region >:< account-id>:services/<serviceName>/functions/<functionName>/async-invoke-configs/* | fc:ListFunctionAsyncInvokeConfigs | 非同期呼び出し設定。 |
acs:fc:<region >:< account-id>:services/<serviceName>/functions/<functionName>/code | fc:GetFunctionCode | すべての関数コード。 |
acs:fc:<region >:< account-id>:services/<serviceName>/functions/<functionName>/stateful-async-invocations/* | fc:ListStatefulAsyncInvocations | 非同期タスク |
acs:fc:<region >:< account-id>:services/<serviceName>/functions/<functionName>/stateful-async-invocations/<invocationId> | fc:GetStatefulAsyncInvocation | |
fc:StopStatefulAsyncInvocation |
上記の操作とリソースを使用して、中国 (杭州) リージョンのtestサービスでdemo関数を呼び出す権限を付与するために使用される次のカスタムポリシーを定義できます。
{
"Version": "1",
"Statement": [
{
"Action": [
"fc:InvokeFunction"
],
"Resource": "acs:fc:cn-hangzhou:*:services/test/functions/demo",
"Effect": "Allow"
}
]
}
サンプルポリシー
Function Computeでサービスを作成および照会し、関数を作成および呼び出す権限を持つカスタムポリシー
{
"Version":"1",
"Statement":[
{
"Action":[
"fc:CreateService",
"fc:GetService",
"fc:CreateFunction",
"fc:GetFunction",
"fc:InvokeFunction"
],
"Resource":"*",
"Effect":"Allow"
},
{
"Action":[
"ram:PassRole"
],
"Effect":"Allow",
"Resource":"*"
}
]
}
ログへのアクセス許可を付与するために使用されるカスタムポリシー
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"log:ListProject",
"log:ListLogStore"
],
"Resource": "acs:log:*:*:project/*"
}
]
}
OSSイベントトリガーにアクセスする権限を付与するために使用されるカスタムポリシー
{
"Statement": [
{
"Action": [
"oss:ListBucket",
"oss:GetBucketEventNotification",
"oss:PutBucketEventNotification",
"oss:DeleteBucketEventNotification"
],
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "1"
}
インターネットにアクセスできるサービスを作成できないカスタムポリシー
{
"Version": "1",
"Statement": [
{
"Action": "fc:UpdateService",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringEquals": {
"fc:EnableServiceInternetAccess": "true"
}
}
},
{
"Action": "fc:CreateService",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"fc:EnableServiceInternetAccess": "false"
}
}
}
]
}
Log Serviceにアクセスできないサービスを作成できないカスタムポリシー
{
"Version": "1",
"Statement": [
{
"Action": "fc:UpdateService",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringEquals": {
"fc:EnableServiceSLSLogging": "false"
}
}
},
{
"Action": "fc:CreateService",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"fc:EnableServiceSLSLogging": "true"
}
}
}
]
}
インターネット経由でアクセスできるトリガーを作成できないカスタムポリシー
{
"Version": "1",
"Statement": [
{
"Action": "fc:UpdateTrigger",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringEquals": {
"fc:EnableHTTPTriggerAnonymous": "true"
}
}
},
{
"Action": "fc:CreateTrigger",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringEquals": {
"fc:EnableHTTPTriggerAnonymous": "true"
}
}
}
]
}