全部產品
Search
文件中心

Function Compute:權限原則及樣本

更新時間:Jan 17, 2025

Function Compute許可權管理通過阿里雲的存取控制RAM實現。使用存取控制RAM可以讓您避免與其他使用者共用雲帳號密鑰,即AccessKey(包含AccessKey ID和AccessKey Secret),按需為RAM使用者指派最小許可權。本文介紹Function Compute的權限原則,包括系統策略、自訂策略及自訂策略樣本。

策略類型

在存取控制中,權限原則是用文法和結構描述的一組許可權的集合,可以精確地描述被授權的Resource(資源集)、Action(操作集)以及授權條件。Function Compute包含以下權限原則:

  • 系統策略:統一由阿里雲建立,您只能使用不能修改,策略的版本更新由阿里雲維護。

  • 自訂策略:您可以自主建立、更新和刪除,策略的版本更新由您自己維護。

系統策略

當您首次使用RAM使用者登入Function Compute控制台時,不僅需要通過阿里雲帳號給您的RAM使用者添加訪問Function Compute的系統權限原則,也需要給RAM使用者添加訪問其他雲端服務的系統權限原則。成功授權後,您的RAM使用者才可以正常訪問Function Compute服務及其他雲產品服務。

系統策略包含以下類型:

  • Function Compute服務提供的系統策略。

    權限原則名稱

    描述

    AliyunFCReadOnlyAccess

    表示允許對Function Compute所有的資源進行讀操作。

    AliyunFCInvocationAccess

    表示允許對所有函數的資源進行執行操作。

    AliyunFCFullAccess

    表示允許對所有Function Compute資源進行所有執行操作。

    說明

    管理Function Compute服務許可權AliyunFCFullAccess內包含調用Function Compute服務函數的許可權AliyunFCInvocationAccess及唯讀訪問Function Compute服務許可權AliyunFCReadOnlyAccess。當成功授權管理Function Compute服務的許可權後,您無需再授權調用函數或唯讀Function Compute的許可權。

  • 其他雲產品服務提供的系統策略。

    雲產品名稱

    系統策略

    Log ServiceSLS

    • AliyunLogReadOnlyAccess:唯讀訪問Log ServiceLog的許可權。

    • AliyunLogFullAccess:管理Log ServiceLog的許可權。

    說明

    基於最小許可權的原則,您只需授予RAM使用者唯讀訪問Log ServiceLog的許可權AliyunLogReadOnlyAccess即可訪問Log ServiceLog。

    Object Storage Service

    • AliyunOSSReadOnlyAccess:唯讀Object Storage Service服務OSS的許可權。

    • AliyunOSSFullAccess:管理Object Storage Service服務OSS許可權。

    CloudMonitor

    AliyunCloudMonitorReadOnlyAccess:唯讀訪問CloudMonitorCloudMonitor的許可權。

    Apsara Stack Security認證服務

    AliyunYundunCertReadOnlyAccess:唯讀訪問Apsara Stack Security認證服務的許可權。

    Virtual Private Cloud

    AliyunVPCReadOnlyAccess:唯讀訪問Virtual Private Cloud的許可權。

    Elastic Compute Service

    AliyunECSReadOnlyAccess:唯讀訪問雲端服務器服務ECS的許可權。

    存取控制RAM

    • AliyunRAMReadOnlyAccess:唯讀存取控制RAM的許可權,即查看使用者、組以及授權資訊的許可權。

    • AliyunRAMFullAccess:管理存取控制RAM的許可權,即系統管理使用者以及授權的許可權。

    說明

    AliyunRAMReadOnlyAccess僅適用於在控制台擷取角色的列表,當RAM使用者還需要進行其他動作,您需給RAM使用者添加管理存取控制RAM的許可權,即AliyunRAMFullAccess

    應用即時監控服務ARMS

    • AliyunARMSReadOnlyAccess:唯讀訪問應用即時監控服務ARMS的許可權。

    • AliyunARMSFullAccess:管理應用即時監控服務ARMS的許可權。

    說明

    基於最小許可權的原則,您只需授予RAM使用者唯讀訪問應用即時監控服務ARMS的許可權AliyunARMSReadOnlyAccess即可訪問應用即時監控服務ARMS。

    Simple Message Queue (formerly MNS)

    • AliyunMNSReadOnlyAccess:唯讀訪問Simple Message Queue (formerly MNS)的許可權。

    • AliyunMNSFullAccess:管理Simple Message Queue (formerly MNS)的許可權。

    說明

    基於最小許可權的原則,您只需授予RAM使用者唯讀訪問Simple Message Queue (formerly MNS)的許可權即AliyunMNSReadOnlyAccess即可滿足訪問Simple Message Queue (formerly MNS)

    事件匯流排EventBridge

    • AliyunEventBridgeReadOnlyAccess:唯讀訪問事件匯流排EventBridge的許可權。

    • AliyunEventBridgeFullAccess:管理事件匯流排EventBridge的許可權。

    說明

    基於最小許可權的原則,您只需授予RAM使用者唯讀訪問事件匯流排EventBridge的許可權即AliyunEventBridgeReadOnlyAccess即可滿足訪問事件匯流排EventBridge。

    訊息佇列RocketMQ版

    • AliyunMQReadOnlyAccess:唯讀訪問Message Queue的許可權。

    • AliyunMQFullAccess:管理Message Queue的許可權。

    說明

    基於最小許可權的原則,您只需授予RAM使用者唯讀訪問Message Queue的許可權即AliyunMQReadOnlyAccess即可滿足訪問訊息佇列RocketMQ版。

    Container RegistryACR

    • AliyunContainerRegistryReadOnlyAccess:唯讀訪問Container RegistryContainerRegistry的許可權。

    • AliyunContainerRegistryFullAccess:管理Container RegistryContainerRegistry的許可權。

    說明

    基於最小許可權的原則,您只需授予RAM使用者唯讀訪問Container RegistryContainerRegistry的許可權即AliyunContainerRegistryReadOnlyAccess即可訪問Container Registry。

    Apsara File Storage NAS

    • AliyunNASReadOnlyAccess:查看檔案儲存體服務NAS的許可權。

    • AliyunNASFullAccess:管理檔案儲存體服務NAS的許可權。

    說明

    基於最小許可權的原則,您只需授予RAM使用者查看檔案儲存體服務(NAS)的許可權即AliyunNASReadOnlyAccess即可滿足訪問檔案儲存體服務。

    雲資料庫RDS

    • AliyunRDSReadOnlyAccess:唯讀訪問雲資料庫服務RDS的許可權。

    • AliyunRDSFullAccess:管理雲資料庫服務RDS的許可權。

    說明

    基於最小許可權的原則,您只需授予RAM使用者唯讀訪問雲資料庫服務RDS的許可權即AliyunRDSReadOnlyAccess即可滿足訪問雲資料庫服務。

    雲效

    • AliyunRDCReadOnlyAccess:唯讀訪問雲效RDC的許可權。

    • AliyunRDCFullAccess:管理雲效RDC的許可權。

    說明

    基於最小許可權的原則,您只需授予RAM使用者唯讀訪問雲效RDC的許可權,即AliyunRDCReadOnlyAccess,即可滿足訪問雲效RDC。

重要

當阿里雲帳號給RAM使用者授予關於觸發器相關的許可權,例如,Object Storage Service的AliyunOSSFullAccess許可權後,出現無法更新觸發器的情況時,阿里雲帳號還需給RAM使用者添加如下自訂策略。成功授權後RAM使用者可以正常更新Object Storage Service觸發器。

 {
        "Statement": [
            {
                "Action": [
                    "ram:PassRole"
                ],
                "Effect": "Allow",
                "Resource": "*"
            }
        ],
        "Version": "1"
    }

自訂策略

除了Function Compute預設提供的系統策略外,您也可以通過自訂策略進行更細粒度的許可權管理。關於權限原則的基本資料,請參見權限原則基本元素

Resource

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>:custom-domains/<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

您可以通過以上自訂的權限原則設定具有調用華東1(杭州)地區下test服務下demo函數的許可權,具體策略如下所示:

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "fc:InvokeFunction"
            ],
            "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"
}

自訂禁止建立支援訪問公網的服務權限原則

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

自訂禁止建立無法開啟日誌訪問的服務權限原則

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