Alibaba Cloudは、Function Computeの権限を管理するためのRAM (Resource Access Management) を提供しています。 RAMを使用する場合、Alibaba CloudアカウントのAccessKeyペアを他のユーザーと共有する必要はありません。 代わりに、最低限必要な権限のみを付与できます。 AccessKeyペアには、AccessKey IDとAccessKeyシークレットが含まれます。 このトピックでは、システムポリシーやカスタムポリシーなど、Function Computeのポリシーについて説明します。 このトピックでは、サンプルのカスタムポリシーも提供します。

ポリシーの種類

RAMでは、ポリシーはポリシー構文と構造に基づいて記述される一連の権限です。 ポリシーは、許可されたリソースセット、アクションセット、および許可条件を正確に記述します。 Function Computeのポリシーには、次の種類があります。
  • システムポリシー: Alibaba Cloudによって作成されたポリシー。 これらのポリシーは使用できますが、変更することはできません。 Alibaba Cloudは、ポリシーのバージョン更新を維持します。
  • カスタムポリシー: 作成、更新、および削除できるポリシー。 これらのポリシーのバージョン更新を維持します。

システムポリシー

初めてRAMユーザーとしてにログインする前に、Alibaba Cloudアカウントを使用して、Function Computeにアクセスするためのシステムポリシーと他のAlibaba CloudサービスにアクセスするためのシステムポリシーをRAMユーザーにアタッチする必要があります。 RAMユーザーとしてFunction Computeを含むAlibaba Cloudサービスにアクセスできるのは、システムポリシーがRAMユーザーにアタッチされた場合のみです。

システムポリシーには、次の種類があります。
  • Function Computeのシステムポリシー
    Policy 説明
    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 (VPC) AliyunVPCReadOnlyAccess: すべてのVPCリソースに対する読み取り専用権限。
    Elastic Compute Service (ECS) AliyunECSReadOnlyAccess: すべてのECSリソースに対する読み取り専用権限。
    RAM
    • AliyunRAMReadOnlyAccess: ユーザー、グループ、および権限情報を表示する権限を含む、すべてのRAMリソースに対する読み取り専用権限。
    • AliyunRAMFullAccess: すべてのRAMリソースを管理するための権限 (ユーザーの管理と権限付与の権限を含む) 。
    RAMユーザーにAliyunRAMReadOnlyAccessポリシーのみをアタッチする場合、RAMユーザーとしてコンソールで取得できるのはロールのリストのみです。 RAMユーザーとして他の操作を実行する必要がある場合は、AliyunRAMFullAccessポリシーをRAMユーザーにアタッチする必要があります。
    アプリケーションリアルタイム監視サービス (ARMS)
    • 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 AliyunRDCDevStudioRole: Apsara Devopsアカウントを作成し、Apsara Devops組織ワークスペースを初期化するための権限。
重要 たとえば、Alibaba Cloudアカウントを使用してAliyunOSSFullAccessポリシーをRAMユーザーにアタッチするなど、トリガーに関連する権限を付与した後にOSSイベントトリガーをRAMユーザーとして更新できない場合は、Alibaba Cloudアカウントを使用して次のカスタムポリシーをRAMユーザーにアタッチします。 カスタムポリシーがアタッチされた後、OSSイベントトリガーをRAMユーザーとして更新できます。
 {
        "Statement": [
            {
                "Action": [
                    "ram:PassRole"
                ],
                "Effect": "Allow",
                "Resource": "*"
            }
        ],
        "Version": "1"
    }

カスタムポリシー

Function Computeは、システムポリシーに加えて、RAMユーザーにきめ細かい権限を付与できるカスタムポリシーをサポートしています。 ポリシーの要素の詳細については、「ポリシー要素」をご参照ください。

リソース 操作 説明
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/:version fc:PublishLayerAsPublic
acs:fc:<region >:< account-id>:layers/:layerName/versions/* fc:ListLayerVersions すべてのレイヤーバージョン。
fc:CreateLayerVersion
acs:fc:<region >:< account-id>:layers/:layerName/versions/:version 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": [
                &quot;fc:InvokeFunction&quot;
            ],
            "Resource": "acs:fc:cn-hangzhou:*:services/test/functions/demo" 、
            "Effect":"Allow"
        }
    ]
}

サンプルカスタムポリシー

サービスの作成とクエリ、および関数の作成と呼び出しの権限を付与するために使用されるカスタムポリシー

{
    "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"
}