全部產品
Search
文件中心

Function Compute:服務關聯角色

更新時間:Jul 06, 2024

可信雲端服務可以通過RAM角色扮演的方式訪問其他雲端服務的資源。可信實體為阿里雲服務的RAM角色,包括普通服務角色和服務關聯角色。本文介紹Function Compute的服務關聯角色。

什麼是服務關聯角色

在某些情境下,Function Compute為了完成自身的某個功能,需要擷取其他雲端服務的存取權限,因此,Function Compute建立了與雲端服務關聯的角色,即服務關聯角色AliyunServiceRoleForFC。Function Compute3.0支援AliyunServiceRoleForFC和FaaS函數的綁定,實現最小授權範圍內授予函數訪問其他雲端服務的許可權。

使用Function Compute時,系統提供的服務關聯角色及其包含的系統權限原則如下:

  • 服務關聯角色:AliyunServiceRoleForFC

  • 系統權限原則:AliyunServiceRolePolicyForFC

AliyunServiceRoleForFC

服務關聯角色AliyunServiceRoleForFC可以擷取訪問Virtual Private CloudElastic Compute ServiceSimple Log Service (SLS)Container Registry等雲資源的許可權,以實現函數VPC互連、鏡像下載、資源回收和日誌匯出等功能。

服務關聯角色AliyunServiceRoleForFC被授予權限原則AliyunServiceRolePolicyForFC,該權限原則的內容如下。

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "vpc:DescribeVSwitchAttributes",
                "vpc:DescribeVpcAttribute"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "ecs:CreateNetworkInterface",
                "ecs:DeleteNetworkInterface",
                "ecs:DescribeNetworkInterfaces",
                "ecs:CreateNetworkInterfacePermission",
                "ecs:DeleteNetworkInterfacePermission",
                "ecs:DescribeNetworkInterfacePermissions"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "cr:PullRepository",
                "cr:GetArtifactTag",
                "cr:GetAuthorizationToken",
                "cr:GetRepository",
                "cr:GetRepositoryTag",
                "cr:GetRepoTagManifest",
                "cr:GetRepositoryManifest",
                "cr:GetInstanceVpcEndpoint",
                "cr:GetInstance",
                "cr:GetNamespace",
                "cr:GetArtifactBuildRule",
                "cr:CreateArtifactBuildTask"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "fc:InvokeFunction",
                "eventbridge:PutEvents",
                "mq:PUB",
                "mq:OnsInstanceBaseInfo",
                "mns:SendMessage",
                "mns:PublishMessage",
                "fnf:ReportTaskSucceeded",
                "fnf:ReportTaskFailed"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "log:CreateProject",
                "log:CreateLogStore",
                "log:GetProject",
                "log:GetLogStore",
                "log:DeleteProject",
                "log:DeleteLogStore",
                "log:GetLogStoreLogs"
            ],
            "Resource": [
                "acs:log:*:*:project/aliyun-fc-*",
                "acs:log:*:*:project/*/logstore/function-log*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "log:PostLogStoreLogs"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "ram:GetRole"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Effect": "Allow",
            "Action": "ram:DeleteServiceLinkedRole",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ram:ServiceName": "fc.aliyuncs.com"
                }
            }
        }
    ]
}

以下是使用Function Compute時,需要建立和使用服務關聯角色的情境:

  • Function Compute配置Virtual Private Cloud、交換器或彈性網卡等,提升資料安全性,實現VPC內的網路互連。

  • 訪問容器鏡像倉庫拉取鏡像建立容器鏡像函數,能夠利用容器鏡像資源靈活部署函數。

  • 配置訊息佇列或事件匯流排等Message Service的存取權限,使用Function Compute監聽訊息源的事件。當有新的訊息或事件產生時,可以直接觸發函數執行,實現事件驅動的計算模型。

  • 配置Log Service相關許可權,允許自動收集合函式執行日誌,便於日誌的搜尋、分析和可視化展示,協助使用者快速定位問題。

建立服務關聯角色

登入Function Compute3.0控制台時,系統會檢查當前帳號是否已有服務關聯角色AliyunServiceRoleForFC,如果不存在則會彈出提示,在您確認授權自動建立服務關聯角色AliyunServiceRoleForFC並授權AliyunServiceRolePolicyForFC後,系統自動建立AliyunServiceRoleForFC。

建立完成後,您可以在RAM控制台的角色管理頁面、API或CLI調用ListRoles - 擷取角色列表的返回結果中查看已建立的服務關聯角色。您還可以登入Function Compute3.0控制台,如果可以正常使用則表示已成功建立服務關聯角色。

刪除服務關聯角色

您可以登入RAM控制台刪除服務關聯角色。刪除後,將無法正常使用Function Compute3.0控制台,請謹慎操作。

  1. 使用Resource Access Management員登入RAM控制台

  2. 在左側導覽列,選擇身份管理 > 角色

  3. 角色頁面,單擊目標RAM角色操作列的刪除角色

  4. 刪除角色對話方塊,輸入RAM角色名稱,然後單擊刪除角色

    當您嘗試刪除一個服務關聯角色時,RAM會先檢查這個角色是否仍被雲資源使用,如果被佔用則會刪除失敗,可以根據刪除失敗的提示資訊,查看哪些雲資源在使用該角色。您需要找到對應的雲資源並手動清理這些雲資源,然後再刪除該服務關聯角色。

RAM使用者使用服務關聯角色需要的許可權

如果使用RAM使用者建立或刪除服務關聯角色,必須使用阿里雲帳號(主帳號)為該RAM使用者授予ram:CreateServiceLinkRole和ram:DeleteServiceLinkedRole許可權,或直接授予AliyunRAMFullAccess許可權。

以下樣本為允許RAM使用者為Function Compute建立和刪除服務關聯角色的自訂權限原則樣本。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ram:CreateServiceLinkedRole",
                "ram:DeleteServiceLinkedRole"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ram:ServiceName": "fc.aliyuncs.com"
                }
            }
        }
    ]
}