모델 공유

AI Platform Prediction에서는 Identity and Access Management(IAM)를 사용하여 리소스에 대한 액세스를 관리합니다. 리소스에 대한 액세스 권한을 부여하려면 사용자, 그룹 또는 서비스 계정역할을 하나 이상 할당합니다. 모델을 공유하려면 모델 및 모델 버전에 액세스 권한을 제공하는 역할을 부여합니다.

이 가이드에서는 모델 리소스에 대한 액세스 권한을 부여하는 데 사용할 수 있는 사전 정의된 AI Platform Prediction 역할 두 가지를 자세히 설명합니다.

  • AI Platform Prediction 모델 소유자
  • AI Platform Prediction 모델 사용자

다른 역할에 대한 자세한 내용은 AI Platform Prediction에 사용할 수 있는 모든 IAM 역할에 대한 자세한 설명을 참조하세요.

시작하기 전에

  • 머신러닝 모델을 학습시킵니다.
  • AI Platform Prediction에 모델을 배포합니다.

모델 역할

AI Platform Prediction 모델 소유자 및 모델 사용자 역할은 특정 모델 리소스에 다양한 권한을 부여합니다.

개인 또는 서비스에 모델 사용자 역할을 부여하여 모델을 공유할 수 있습니다.

역할 칭호 역할 이름 기능
AI Platform Prediction 모델 소유자

roles/ml.modelOwner

모델 및 모델 버전에 대한 전체 액세스 권한입니다. 이 역할은 모델을 생성하는 사용자에게 자동으로 부여됩니다.

AI Platform Prediction 모델 사용자

roles/ml.modelUser

모델 및 모델 버전을 읽고 예측을 위해 사용할 수 있는 권한입니다. 이 역할을 부여하면 특정 모델을 쉽게 공유할 수 있습니다.

모델에 대한 개인 및 서비스 계정 액세스 권한 부여

이 예에서는 개인 및 서비스 계정에 모델 소유자 또는 모델 사용자 역할을 부여하여 특정 모델에 대한 IAM 정책을 편집하는 방법을 보여줍니다. API, gcloud 또는 Google Cloud Console을 사용하여 정책 파일을 수정할 수 있습니다.

콘솔

사용자 또는 서비스 계정과 모델 공유

  1. AI Platform Prediction 모델 페이지를 엽니다.

    AI Platform 예측 모델 페이지 열기

  2. 공유할 각 모델의 체크박스를 선택합니다.

  3. 오른쪽 상단에 있는 정보 패널 표시 버튼을 클릭하여 권한 탭을 표시합니다.

  4. 구성원 추가 필드에서 모델을 공유할 사용자의 Google 계정을 추가합니다. 예를 들면 'email1@gmail.com'입니다.

  5. 역할 선택 드롭다운 필드에서 사용자에게 추가할 역할을 선택합니다. 모델 리소스를 공유하려면 ML Engine 모델 소유자 또는 ML Engine 모델 사용자를 선택합니다.

    어떤 역할을 선택해야 할지 모르는 경우, 모델 역할에서 자세한 내용을 참조하세요.

  6. 역할 선택 드롭다운 필드 옆에 있는 추가 버튼을 클릭하여 역할 선택을 마무리합니다.

  7. Google Cloud 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 Prediction 모델 소유자 역할이 할당됩니다.

     {
        "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.comroles/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=
    

정책 binding 명령어로 정책 수정

add-iam-policy-bindingremove-iam-policy-binding 명령어를 사용하여 모델에 대한 액세스 권한을 부여하고 취소하고 업데이트합니다.

사용자와 모델 공유

  1. add-iam-policy-binding 명령어를 사용하여 다음과 같이 기존 AI Platform Prediction 모델 정책에 사용자를 추가합니다.

    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 Prediction 모델 정책에 서비스 계정을 추가합니다.

    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 Prediction 모델 정책에서 사용자 또는 서비스를 삭제합니다. 이 예시에서는 모델 정책에서 모델 소유자 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=
    

REST 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 호출 시 승인 헤더에 토큰 값을 Bearer 토큰으로 전달합니다.

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