共用模型

AI Platform 使用身分與存取權管理 (IAM) 來管理資源的存取權。如要授予資源的存取權,請將一或多個角色指派給使用者、群組或服務帳戶。您必須先授予角色,給予模型及其版本的存取權,才能共用模型。

本指南著重於說明兩個預先定義的 AI Platform 角色,這兩個角色可用來授予模型資源存取權:

  • AI Platform 模型擁有者
  • AI Platform 模型使用者

如需其他角色的詳細資訊,請參閱所有可搭配 AI Platform 使用的身分與存取權管理角色的完整說明

事前準備

模型角色

AI Platform 模型擁有者和模型使用者角色可針對特定模型資源授予不同的權限。

您可以授予模型使用者角色,來與個別使用者或服務共用模型。

角色職稱 角色名稱 權限
AI Platform 模型擁有者

roles/ml.modelOwner

具備模型及其版本的完整存取權。系統會自動將這個角色授予建立模型的使用者。

AI Platform 模型使用者

roles/ml.modelUser

具備讀取模型及其版本,以及使用這些項目進行預測的權限。授予此權限即可輕鬆共用特定模型。

共用模型

此範例說明如何將「模型擁有者」或「模型使用者」角色授予個人使用者和服務帳戶,以編輯特定模型的 IAM 政策。您可以使用 API、gcloud 或 GCP 主控台來編輯政策檔案。

主控台

和使用者或服務帳戶共用模型

  1. 開啟 AI Platform「Models」(模型) 頁面。

    開啟 AI Platform「Models」(模型) 頁面

  2. 勾選每個您要共用的模型的核取方塊。

  3. 按一下右上角的 [Show Info Panel] (顯示資訊面板) 按鈕,以顯示「Permissions」(權限) 分頁。

  4. 在「Add Members」(新增成員) 欄位中,新增您要共用模型的使用者 Google 帳戶。例如「email1@gmail.com」。

  5. 在 [Select a role] (請選擇角色) 下拉式選單欄位中,選取要為使用者新增的角色。如要共用模型資源,請選取 [ML Engine Model Owner] (ML Engine 模型擁有者) 或 [ML Engine Model User] (ML Engine 模型使用者)

    如果您不確定要選取何種角色,請參閱模型角色以瞭解詳情。

  6. 按一下 [Select a role] (請選擇角色) 下拉式選單欄位旁邊的 [Add] (新增) 按鈕,完成角色選取。

  7. 系統會重新整理 GCP 主控台頁面,顯示您在「Permissions」(權限) 分頁中指派的角色,以及與該角色相關聯的成員清單。

如要停止與使用者或服務帳戶共用模型,請按一下帳戶 ID 旁的垃圾桶圖示。

gcloud

直接編輯政策檔案以修改模型政策

您可以使用 JSON 或 YAML 檔案搭配 gcloud 指令。此範例採用 JSON。

  1. 取得您要修改的政策,並寫入 JSON 檔案。

    gcloud ai-platform models get-iam-policy <MODEL_NAME> --format json > iam.json
    
  2. 開啟政策檔案 (在此範例中為 iam.json) 或執行 cat iam.json 以查看政策。在下列範例政策中,系統已指派 AI Platform「模型擁有者」角色給服務帳戶,因此服務帳戶可存取線上預測。

     {
        "bindings": [
        {
            "role": "roles/ml.modelOwner",
            "members": [
                "serviceAccount:my-other-app@appspot.gserviceaccount.com",
                "user:email1@gmail.com"
            ]
        }
        ],
        "etag": "BwVUJYGz8M4=",
     }
    
  3. 使用文字編輯器更新 iam.json 檔案,如下所示。將物件新增至 bindings 陣列,以定義群組成員和成員的角色。比方說,如要授予 email2@gmail.com 使用者 roles/ml.modelUser 角色,請變更上方的範例,如下所示:

     {
        "bindings": [
        {
            "role": "roles/ml.modelOwner",
            "members": [
                "serviceAccount:my-other-app@appspot.gserviceaccount.com",
                "user:email1@gmail.com"
            ]
        },
        {
            "role": "roles/ml.modelUser",
            "members": [
                "user:email2@gmail.com"
            ]
        }
        ],
        "etag": "BwVUJYGz8M4=",
     }
    
  4. 執行下列指令以更新專案政策:

    gcloud ai-platform models set-iam-policy <MODEL_NAME> iam.json
    
  5. 指令會以 YAML 格式輸出更新後的原則:

    bindings:
    - members:
      - user:email1@gmail.com
      - serviceAccount:otherapp@appspot.gserviceaccount.com
      role: roles/ml.modelOwner
    - members:
      - user:email2@gmail.com
      role: roles/ml.modelUser
    etag: BwVUJYGz8M4=
    

使用政策繫結指令來修改政策

使用 add-iam-policy-bindingremove-iam-policy-binding 指令來授予、撤銷及更新模型的存取權。

和使用者共用模型

  1. 使用 add-iam-policy-binding 指令將使用者新增至現有的 AI Platform 模型政策,如下所示:

    gcloud ai-platform models add-iam-policy-binding <MODEL_NAME> \
        --member user:email3@gmail.com --role roles/ml.modelUser
    

    指令會輸出更新後的政策:

        bindings:
        - members:
          - user:email1@gmail.com
          - serviceAccount:otherapp@appspot.gserviceaccount.com
          role: roles/ml.modelOwner
        - members:
          - user:email2@gmail.com
          - user:email3@gmail.com
          role: roles/ml.modelUser
        etag: BwVUJYGz8M4=
    

和服務共用模型

  1. 使用 add-iam-policy-binding 指令將服務帳戶新增至現有的 AI Platform 模型政策,如下所示:

    gcloud ai-platform models add-iam-policy-binding <MODEL_NAME> \
        --member=serviceAccount:newserviceapp@appspot.gserviceaccount.com \
        --role=roles/ml.modelOwner
    

    指令會輸出更新後的政策:

      bindings:
      - members:
        - user:email1@gmail.com
        - serviceAccount:otherapp@appspot.gserviceaccount.com
        - serviceAccount:newserviceapp@appspot.gserviceaccount.com
        role: roles/ml.modelOwner
      - members:
        - user:email2@gmail.com
        - user:email3@gmail.com
        role: roles/ml.modelUser
      etag: BwVUJYGz8M4=
    

停止共用模型

  1. 如要停止和使用者或服務共用模型,請使用 remove-iam-policy-binding 指令,從現有的 AI Platform 模型政策移除使用者或服務。在此範例中,我們從模型政策移除「模型擁有者」email1@gmail.com

    gcloud ai-platform models remove-iam-policy-binding <MODEL_NAME> \
          --member=user:email1@gmail.com \
          --role=roles/ml.modelOwner
    

    指令會輸出更新後的政策:

      bindings:
      - members:
        - serviceAccount:otherapp@appspot.gserviceaccount.com
        - serviceAccount:newserviceapp@appspot.gserviceaccount.com
        role: roles/ml.modelOwner
      - members:
        - user:email2@gmail.com
        - user:email3@gmail.com
        role: roles/ml.modelUser
      etag: BwVUJYGz8M4=
    

API

透過 JSON API 修改政策

  1. 傳送下列要求以取得現有政策:

    GET https://ml.googleapis.com/v1/projects/<project>/models/<model>:getIamPolicy
    

    指令會在回應中傳回目前的政策:

       {
          "bindings": [
          {
              "role": "roles/ml.modelOwner",
              "members": [
                  "serviceAccount:my-other-app@appspot.gserviceaccount.com",
                  "user:email1@gmail.com"
              ]
          }
          ]
       }
    
  2. 修改政策後,請傳送下列要求以進行更新:

    POST https://ml.googleapis.com/v1/projects/<project>/models/<model>:setIamPolicy
    

    指令會在回應中傳回更新的政策。在此範例中,我們將使用者 email2@gmail.com 新增為模型使用者:

        {
           "policy": {
               "bindings": [
               {
                   "role": "roles/ml.modelOwner",
                   "members": [
                       "serviceAccount:my-other-app@appspot.gserviceaccount.com",
                       "user:email1@gmail.com"
                   ]
               },
               {
                   "role": "roles/ml.modelUser",
                   "members": [
                       "user:email2@gmail.com"
                   ]
               }
               ]
           }
        }
    
  1. 如要取得存取憑證:

    gcloud auth print-access-token
    
  2. 呼叫 API 時,將憑證值做為不記名憑證傳送至授權標頭中:

    curl -s -H 'Authorization: Bearer <ACCESS_TOKEN>' \
        https://ml.googleapis.com/v1/projects/<project>/models/<model>:getIamPolicy
    

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
TensorFlow 適用的 AI Platform