可信雲端服務可以通過RAM角色扮演的方式訪問其他雲端服務的資源。可信實體為阿里雲服務的RAM角色,包括普通服務角色和服務關聯角色。本文介紹Function Compute的服務關聯角色。
什麼是服務關聯角色
在某些情境下,Function Compute為了完成自身的某個功能,需要擷取其他雲端服務的存取權限,因此,Function Compute建立了與雲端服務關聯的角色,即服務關聯角色AliyunServiceRoleForFC。Function Compute3.0支援AliyunServiceRoleForFC和FaaS函數的綁定,實現最小授權範圍內授予函數訪問其他雲端服務的許可權。
使用Function Compute時,系統提供的服務關聯角色及其包含的系統權限原則如下:
服務關聯角色:AliyunServiceRoleForFC
系統權限原則:AliyunServiceRolePolicyForFC
AliyunServiceRoleForFC
服務關聯角色AliyunServiceRoleForFC可以擷取訪問Virtual Private Cloud、Elastic Compute Service、Simple 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控制台,請謹慎操作。
使用Resource Access Management員登入RAM控制台。
在左側導覽列,選擇 。
在角色頁面,單擊目標RAM角色操作列的刪除角色。
在刪除角色對話方塊,輸入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"
}
}
}
]
}