全部產品
Search
文件中心

Function Compute:授予不同RAM使用者不同分組函數的操作許可權

更新時間:Sep 27, 2025

Function Compute支援通過標籤Tag對函數進行多維分類管理,便於快速檢索資源,也可以通過標籤實現精微調權限管控,通過為不同RAM使用者或使用者組授予不同的許可權,實現RAM使用者間資源隔離,提升安全管理效率。

應用情境

某企業的阿里雲主帳號建立了多個函數,需要按業務分組將不同的函數授權給不同的團隊,企業希望每個團隊只能查看和管理被授權的函數,未被授權的函數不允許查看和管理。

例如:

  • Team Dev:只能管理開發環境相關的函數

  • 營運團隊:只能管理生產環境相關的函數

注意事項

  • 為遵循最小授權原則,請不要為RAM使用者授予權限原則AliyunFCFullAccessAliyunFCReadOnlyAccess等權限等級過高的策略,否則將不能使用本文介紹的通過函數標籤分組管理函數。

  • RAM使用者必須使用標籤篩選才能查看和管理對應授權的函數,否則,RAM使用者無法查看任何函數。

  • 確保RAM使用者操作時選擇的地區與資源群組內函數所在地區一致。

  • RAM使用者組中的RAM使用者自動繼承RAM使用者組的許可權。

  • 函數下的子資源與配置,包括別名、觸發器、函數非同步配置、函數並發配置、執行個體、VPC綁定、非同步任務等,都將遵循函數的許可權控制,只能被有對應標籤的RAM使用者管理。

流程概覽

  1. 按標籤標識不同團隊的函數

    規劃兩個標籤,分別用來標識developer團隊和operator團隊。

  2. 將RAM使用者分組

    規劃兩個RAM使用者,分別對應developer團隊和operator團隊,將對應團隊的RAM使用者加入到對應的RAM使用者組。

  3. 基於標籤鑒權對RAM使用者組進行授權

    規劃兩個自訂權限原則,使用標籤鑒權Condition確定資源範圍。然後,將不同的權限原則授權給不同的RAM使用者組,RAM使用者組中的RAM使用者將繼承RAM使用者組的許可權。

詳細規劃見下表:

團隊

RAM使用者組

RAM權限原則

標籤

developer團隊

developer

FCPolicyForDevTeam

  • 標籤鍵:team

  • 標籤值:dev

operator團隊

operator

FCPolicyForOpsTeam

  • 標籤鍵:team

  • 標籤值:ops

操作步驟

  1. 建立函數並綁定標籤。

    使用阿里雲主帳號登入Function Compute控制台建立函數,並為部分函數綁定標籤team:dev,部分函數綁定標籤team:ops。關於綁定標籤的具體操作,請參見配置標籤

  2. 建立RAM使用者。

    使用阿里雲主帳號登入RAM控制台建立兩個RAM使用者。具體操作,請參見建立RAM使用者

  3. 建立RAM使用者組並綁定RAM使用者。綁定後RAM使用者將繼承對應RAM使用者組的許可權。

    使用阿里雲主帳號登入RAM控制台建立developer和operator兩個使用者組,將已建立的兩個RAM使用者分別添加到使用者組developer和operator下。具體操作,請參見建立RAM使用者組為RAM使用者組添加RAM使用者

  4. 建立自訂權限原則。

    權限原則分為系統權限原則和自訂權限原則,根據實際情境選擇合適的權限原則。本文以為使用者組授予自訂權限原則為例進行介紹。

    使用阿里雲主帳號登入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": "*"
              }
          ]
      }

    展開查看可選策略

    為了避免日常使用Function Compute時出現許可權不足的問題,可以添加以下可選策略。

    {
          "Effect": "Allow",
          "Action": [
            "log:Get*",
            "log:List*",
            "log:Query*",
            "log:CreateProject",
            "log:CreateLogStore",
            "log:CreateIndex"
          ],
          "Resource": "*"
        },
        {
          "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": "*"
        }

    權限原則說明如下:

    策略內容

    策略說明

    {
    	"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等產品,您還需要單獨添加對應產品的相關許可權。具體策略內容請參見權限原則及樣本

  5. 為RAM使用者組授權。

    1. 分別為使用者組developer和operator授予自訂權限原則FCPolicyForDevTeam和FCPolicyForOpsTeam

    2. 為使用者組developer和operator授予系統權限原則AliyunRAMFullAccess和AliyunECSFullAccess。授權後,該RAM使用者組內的RAM使用者可以建立指定標籤的函數,建立RAM使用者、使用者組以及建立和綁定權限原則等。

    關於為使用者組授權的具體操作,請參見為RAM使用者組授權

    以使用者組developer為例,建議授權的策略如下所示:

    image

結果驗證

  1. 分別使用兩個RAM使用者登入Function Compute控制台,在左側導覽列,選擇函數管理 > 函數列表

    關於使用RAM使用者登入控制台的操作步驟,請參見RAM使用者登入阿里雲控制台

  2. 在頂部功能表列,選擇地區,然後在函數頁面,單擊標籤篩選,篩選對應的標籤鍵標籤值,查詢和管理已授權函數。

    僅當RAM使用者選擇了對應使用者組已授權策略中包含的標籤時,該RAM使用者才能查看和管理綁定了對應標籤的函數,否則,RAM使用者無法查看任何函數。

    以RAM使用者組developer下的RAM使用者為例,可以通過標籤team:dev篩選被授權函數。

    image

相關文檔