モデルの共有

AI Platform は、Identity and Access Management(IAM)を使用してリソースへのアクセスを管理します。リソースへのアクセス権を付与するには、ユーザー、グループ、またはサービス アカウントに 1 つ以上の役割を割り当てます。モデルを共有するには、モデルとそのバージョンにアクセスできるようにする役割を付与します。

このガイドでは、モデルリソースへのアクセス権の付与に使用できる、2 つの事前定義された AI Platform の役割に焦点を当てています。

  • AI Platform モデルオーナー
  • AI Platform モデルユーザー

他の役割の詳細については、AI Platform で使用できるすべての IAM の役割に関する説明をご覧ください。

始める前に

モデルの役割

AI Platform のモデルオーナーとモデルユーザーの役割を使用すると、特定のモデルリソースに対してさまざまな権限を付与できます。

個人やサービスにモデルユーザーの役割を付与することで、個人やサービスとモデルを共有できます。

役割のタイトル 役割名 機能
AI Platform モデルオーナー

roles/ml.modelOwner

モデルとそのバージョンに対するフルアクセスが許可されます。この役割は、モデルを作成するユーザーに自動的に付与されます。

AI Platform モデルユーザー

roles/ml.modelUser

モデルとそのバージョンを読み取り、予測に使用する権限が付与されます。この役割を付与することで、特定のモデルを簡単に共有できます。

モデルの共有

この例では、特定のモデルの IAM ポリシーを編集し、個人とサービス アカウントにモデルオーナーとモデルユーザーの役割を付与する方法を示します。ポリシー ファイルの編集には、API、gcloud または GCP Console を使用します。

Console

モデルをユーザーまたはサービス アカウントと共有する

  1. AI Platform の [モデル] ページを開きます。

    AI Platform の [モデル] ページを開く

  2. 共有したいモデルのチェックボックスをオンにします。

  3. 右上隅にある [情報パネルを表示] ボタンをクリックして、[権限] タブを表示します。

  4. [メンバーを追加] フィールドに、モデルを共有するユーザーの Google アカウントを追加します。たとえば、「email1@gmail.com」と入力します。

  5. [役割を選択] プルダウン リストから、ユーザーに追加する役割を選択します。モデルリソースを共有するため、[ML Engine モデルオーナー] または [ML Engine モデルユーザー] を選択します。

    選択する役割が不明な場合は、モデルの役割をご覧ください。

  6. [役割を選択] プルダウン リストの横にある [追加] ボタンをクリックして、役割の選択を確定します。

  7. GCP Console のページが更新され、[権限] タブで割り当てた役割とその役割に関連付けられているメンバーのリストが表示されます。

ユーザーまたはサービス アカウントとのモデルの共有を停止するには、アカウント ID の横にあるゴミ箱アイコンをクリックします。

gcloud

ポリシー ファイルを直接編集してモデルポリシーを変更する

gcloud コマンドでは、JSON ファイルまたは YAML ファイルを使用できます。この例では 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 配列に追加します。たとえば、役割 roles/ml.modelUser をユーザー email2@gmail.com に付与するには、上記の例を次のように変更します。

     {
        "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-binding コマンドと remove-iam-policy-binding コマンドを使用して、モデルへのアクセス権の付与、取り消し、更新を行います。

モデルをユーザーと共有する

  1. 既存の AI Platform モデルポリシーにユーザーを追加するには、次のように add-iam-policy-binding コマンドを使用します。

    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. 既存の AI Platform モデルポリシーにサービス アカウントを追加するには、次のように add-iam-policy-binding コマンドを使用します。

    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 を呼び出す際は、このトークンの値を Authorization ヘッダーで署名なしトークンとして渡します。

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

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

TensorFlow 用 AI Platform