Function Compute支援通過標籤Tag對函數進行多維分類管理,便於快速檢索資源,也可以通過標籤實現精微調權限管控,通過為不同RAM使用者或使用者組授予不同的許可權,實現RAM使用者間資源隔離,提升安全管理效率。
應用情境
某企業的阿里雲主帳號建立了多個函數,需要按業務分組將不同的函數授權給不同的團隊,企業希望每個團隊只能查看和管理被授權的函數,未被授權的函數不允許查看和管理。
例如:
Team Dev:只能管理開發環境相關的函數
營運團隊:只能管理生產環境相關的函數
注意事項
為遵循最小授權原則,請不要為RAM使用者授予權限原則
AliyunFCFullAccess或AliyunFCReadOnlyAccess等權限等級過高的策略,否則將不能使用本文介紹的通過函數標籤分組管理函數。RAM使用者必須使用標籤篩選才能查看和管理對應授權的函數,否則,RAM使用者無法查看任何函數。
確保RAM使用者操作時選擇的地區與資源群組內函數所在地區一致。
RAM使用者組中的RAM使用者自動繼承RAM使用者組的許可權。
函數下的子資源與配置,包括別名、觸發器、函數非同步配置、函數並發配置、執行個體、VPC綁定、非同步任務等,都將遵循函數的許可權控制,只能被有對應標籤的RAM使用者管理。
流程概覽
按標籤標識不同團隊的函數
規劃兩個標籤,分別用來標識developer團隊和operator團隊。
將RAM使用者分組
規劃兩個RAM使用者,分別對應developer團隊和operator團隊,將對應團隊的RAM使用者加入到對應的RAM使用者組。
基於標籤鑒權對RAM使用者組進行授權
規劃兩個自訂權限原則,使用標籤鑒權Condition確定資源範圍。然後,將不同的權限原則授權給不同的RAM使用者組,RAM使用者組中的RAM使用者將繼承RAM使用者組的許可權。
詳細規劃見下表:
團隊 | RAM使用者組 | RAM權限原則 | 標籤 |
developer團隊 | developer | FCPolicyForDevTeam |
|
operator團隊 | operator | FCPolicyForOpsTeam |
|
操作步驟
建立函數並綁定標籤。
使用阿里雲主帳號登入Function Compute控制台,建立函數,並為部分函數綁定標籤
team:dev,部分函數綁定標籤team:ops。關於綁定標籤的具體操作,請參見配置標籤。建立RAM使用者。
建立RAM使用者組並綁定RAM使用者。綁定後RAM使用者將繼承對應RAM使用者組的許可權。
使用阿里雲主帳號登入RAM控制台建立developer和operator兩個使用者組,將已建立的兩個RAM使用者分別添加到使用者組developer和operator下。具體操作,請參見建立RAM使用者組和為RAM使用者組添加RAM使用者。
建立自訂權限原則。
權限原則分為系統權限原則和自訂權限原則,根據實際情境選擇合適的權限原則。本文以為使用者組授予自訂權限原則為例進行介紹。
假設給developer團隊建立的自訂策略名稱稱為FCPolicyForDevTeam,策略樣本如下。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "fc:*", "Resource": "*", "Condition": { "StringEquals": { "acs:RequestTag/team": [ "dev" ] } } }, { "Effect": "Allow", "Action": "fc:*", "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag/team": [ "dev" ] } } }, { "Effect": "Allow", "Action": [ "fc:ListTaggedResources", "tag:ListTagKeys", "fc:GetAccountSettings" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "fc:UntagResources", "fc:TagResources" ], "Resource": "*" } ] }假設給operator團隊建立的自訂策略名稱稱為FCPolicyForOpsTeam,策略樣本如下。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "fc:*", "Resource": "*", "Condition": { "StringEquals": { "acs:RequestTag/team": [ "ops" ] } } }, { "Effect": "Allow", "Action": "fc:*", "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag/team": [ "ops" ] } } }, { "Effect": "Allow", "Action": [ "fc:ListTaggedResources", "tag:ListTagKeys", "fc:GetAccountSettings" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "fc:UntagResources", "fc:TagResources" ], "Resource": "*" } ] }
權限原則說明如下:
策略內容
策略說明
{ "Effect": "Allow", "Action": "fc:*", "Resource": "*", "Condition": { "StringEquals": { "acs:RequestTag/team": [ "dev" ] } } }允許RAM使用者通過標籤
team:dev篩選函數,以及控制RAM使用者建立函數時,必須同時指定標籤team:dev。{ "Effect": "Allow", "Action": "fc:*", "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag/team": [ "dev" ] } } }限制RAM使用者只能對綁定了標籤
team:dev的函數進行管理操作。{ "Effect": "Allow", "Action": [ "fc:ListTaggedResources", "tag:ListTagKeys", "fc:GetAccountSettings" ], "Resource": "*" },允許查看FC函數的所有標籤列表、擷取自身賬戶資訊。
{ "Effect": "Deny", "Action": [ "fc:UntagResources", "fc:TagResources" ], "Resource": "*" },不允許解除綁定、綁定標籤。
避免RAM使用者因修改標籤破壞許可權隔離。
{ "Effect": "Allow", "Action": [ "log:Get*", "log:List*", "log:Query*", "log:CreateProject", "log:CreateLogStore", "log:CreateIndex" ], "Resource": "*" },允許Function Compute建立與讀取日誌。
{ "Effect": "Allow", "Action": [ "fc:GetLayerVersionByArn", "fc:ListLayers", "fc:PutLayerACL", "fc:ListLayerVersions", "fc:CreateLayerVersion", "fc:DeleteLayerVersion", "fc:GetLayerVersion" ], "Resource": "*" },允許使用層相關功能。
{ "Effect": "Allow", "Action": [ "fc:ListCustomDomains", "fc:GetCustomDomain", "fc:DeleteCustomDomain", "fc:UpdateCustomDomain", "fc:CreateCustomDomain" ], "Resource": "*" },允許使用自訂網域名相關功能。
{ "Effect": "Allow", "Action": [ "ram:ListRoles" ], "Resource": "*" },在配置“函數角色”時,允許查詢角色列表。
說明如果您需要在FC中配置使用OSS、NAS、VPC等產品,您還需要單獨添加對應產品的相關許可權。具體策略內容請參見權限原則及樣本。
為RAM使用者組授權。
分別為使用者組developer和operator授予自訂權限原則FCPolicyForDevTeam和FCPolicyForOpsTeam。
為使用者組developer和operator授予系統權限原則AliyunRAMFullAccess和AliyunECSFullAccess。授權後,該RAM使用者組內的RAM使用者可以建立指定標籤的函數,建立RAM使用者、使用者組以及建立和綁定權限原則等。
關於為使用者組授權的具體操作,請參見為RAM使用者組授權。
以使用者組developer為例,建議授權的策略如下所示:

結果驗證
分別使用兩個RAM使用者登入Function Compute控制台,在左側導覽列,選擇。
關於使用RAM使用者登入控制台的操作步驟,請參見RAM使用者登入阿里雲控制台。
在頂部功能表列,選擇地區,然後在函數頁面,單擊標籤篩選,篩選對應的標籤鍵和標籤值,查詢和管理已授權函數。
僅當RAM使用者選擇了對應使用者組已授權策略中包含的標籤時,該RAM使用者才能查看和管理綁定了對應標籤的函數,否則,RAM使用者無法查看任何函數。
以RAM使用者組developer下的RAM使用者為例,可以通過標籤
team:dev篩選被授權函數。