函數計算支持將相同作用的服務資源通過標簽Tag歸類,便于搜索和資源聚合。您還可以通過標簽功能將服務進行分組,可以實現不同角色對不同分組的服務擁有不同的操作權限。本文介紹標簽功能的使用說明、使用限制以及如何在函數計算控制臺操作標簽等。

使用說明

  • 標簽與服務資源是多對多的關系。
  • 每個標簽都由一對鍵值對組成。
  • 標簽可以是授權的一個條件,為一個確定范圍內的資源做精細粒度授權。
  • 服務下的資源,版本、別名、函數和觸發器均繼承服務的標簽。
    • 只要API的調用上填寫了服務,都支持標簽鑒權。
    • 不同版本的服務都是相同的標簽meta,即標簽修改影響的標簽鑒權針對的是所有版本和別名的服務。

使用限制

  • 標簽鍵(Key)的最大長度為64個Unicode字符,區分大小寫。
  • 標簽值(Value)的最大長度為128個Unicode字符,區分大小寫。
  • 每個資源的標簽數不得超過20個。
  • 標簽鍵(Key)支持ASCII、數字、中文字符和特殊字符-\.!@#$%?/^&*)(+={}[\\]",'<>~·`:;|_。不支持中文標點符號,不支持以aliyunacs:開頭,不允許包含http://https://,不允許為空字符串。
  • 標簽值(Value)支持ASCII、數字、中文字符和特殊字符-\.!@#$%?/^&*)(+={}[\\]",'<>~·`:;|_。不支持中文標點符號,不允許包含http://https://,不允許為空字符串。
  • 各地域間的標簽信息不互通。例如,在華東1(杭州)地域創建的標簽在華東2(上海)地域不可見。

新建標簽

  1. 登錄函數計算控制臺,在左側導航欄,單擊服務及函數
  2. 在頂部菜單欄,選擇地域,然后在服務列表頁面,單擊目標服務。
  3. 在左側導航欄,單擊服務詳情
  4. 基礎信息區域,將鼠標移至標簽后的標簽圖標,然后在氣泡中單擊綁定
  5. 在編輯服務標簽對話框,填寫標簽鍵標簽值,單擊確認,然后單擊關閉
    完成新建標簽后,將鼠標再次移至服務詳情頁面的標簽圖標,您可以看到剛才新建的標簽。您還可以根據需要,參考控制臺界面提示,更新或刪除標簽。

使用標簽對服務分組授權

假設您創建了10個函數計算的服務,需要將5個服務授權給dev團隊,另外5個服務授權給ops團隊。您希望每個團隊只能查看被授權的服務,未被授權的服務無法查看。此時,您可以通過標簽功能將各團隊進行分組,然后給不同分組的團隊授予不同的權限。您需給其中5個服務添加一對標簽,標簽鍵是team,標簽值是dev;另外5個服務添加另一對標簽,標簽鍵是team,標簽值是ops

  1. 將5個授權給dev團隊的服務打上team:dev標簽,5個授權給ops團隊的服務打上team:ops標簽。具體操作,請參見新建標簽
  2. 創建RAM用戶
  3. 創建用戶組
    創建dev和ops兩個用戶組。
  4. 為用戶組添加RAM用戶
    將不同的RAM用戶添加到相應的用戶組下。
  5. 為兩個用戶組授予不同的權限。
    權限策略分為系統權限策略和自定義權限策略,根據實際場景選擇合適的權限策略。
    • 為用戶組授予系統權限策略。

      具體操作,請參見為用戶組授權

    • 為用戶組授予自定義權限策略。
      1. 創建自定義權限策略
        假設給dev團隊創建的自定義策略名稱為policyForDevTeam,策略示例如下。
        {
            "Statement": [
                {
                    "Action": "fc:*",
                    "Effect": "Allow",
                    "Resource": "*",
                    "Condition": {
                        "StringEquals": {
                            "fc:tag/team": "dev"
                        }
                    }
                },
                {
                    "Action": "fc:ListServices",
                    "Effect": "Allow",
                    "Resource": "*"
                },
                {
                    "Action": "fc:GetResourceTags",
                    "Effect": "Allow",
                    "Resource": "*"
                }
            ],
            "Version": "1"
        }         
        假設給ops團隊創建的自定義策略名稱為policyForOpsTeam,策略示例如下。
        {
            "Statement": [
                {
                    "Action": "fc:*",
                    "Effect": "Allow",
                    "Resource": "*",
                    "Condition": {
                        "StringEquals": {
                            "fc:tag/team": "ops"
                        }
                    }
                },
                {
                    "Action": "fc:ListServices",
                    "Effect": "Allow",
                    "Resource": "*"
                },
                {
                    "Action": "fc:GetResourceTags",
                    "Effect": "Allow",
                    "Resource": "*"
                }
            ],
            "Version": "1"
        }          
      2. 為用戶組授權

        選擇權限時請選擇剛創建好的自定義策略。

    完成授權后,處于dev用戶組的RAM賬號只能操作標簽為team:dev的服務,處于ops用戶組的RAM賬號只能操作標簽為team:ops的服務。