커스텀 서비스 계정 사용

AI Platform Prediction이 커스텀 코드를 실행하여 예측을 제공할 때 사용자가 선택한 서비스 계정을 사용하도록 구성할 수 있습니다. 특히 다음 중 하나를 수행할 때 커스텀 서비스 계정을 지정할 수 있습니다.

커스텀 서비스 계정을 사용하면 AI Platform Prediction에서 기본적으로 사용되는 서비스 계정에 지나치게 광범위한 권한을 부여하지 않고도 커스텀 제공 코드가 액세스할 수 있는 Google Cloud 리소스를 맞춤설정할 수 있습니다.

이 가이드에서는 다른 Google Cloud 리소스에 액세스할 수 있는 AI Platform Prediction 리소스의 권한을 중심으로 설명합니다. AI Platform Prediction 리소스 자체에 액세스하는 데 필요한 권한에 대해 알아보려면 액세스 제어를 참조하세요.

Google 관리형 서비스 계정 이해

기본적으로 AI Platform Prediction은 Google 관리형 서비스 계정을 사용하여 커스텀 컨테이너를 사용하지 않는 모델 버전에서 온라인 예측을 제공합니다. 이 서비스 계정은 다음 형식의 이메일 주소로 식별할 수 있습니다.

service-PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com

PROJECT_NUMBER는 Google Cloud 프로젝트의 프로젝트 번호로 바뀝니다.

Google Cloud Console 또는 gcloud 명령줄 도구를 사용하여 프로젝트의 해당 서비스 계정을 찾습니다.

Cloud Console

Cloud Console의 IAM 페이지로 이동하여 이 섹션의 앞부분에서 설명한 이메일 주소 형식과 일치하는 구성원을 찾습니다. 또한 이름이 Google Cloud ML Engine Service Agent인 서비스 계정도 있습니다.

IAM 페이지로 이동

gcloud

gcloud 도구를 초기화한 셸 환경에서 다음 명령어를 실행합니다.

gcloud projects get-iam-policy PROJECT_ID \
  --flatten="bindings[].members" \
  --format="table(bindings.members)" \
  --filter="bindings.role:roles/ml.serviceAgent" \
  | grep serviceAccount:

PROJECT_ID를 Google Cloud 프로젝트의 ID로 바꿉니다.

이 명령어는 다음을 출력합니다.

serviceAccount:GOOGLE_MANAGED_SERVICE_ACCOUNT

GOOGLE_MANAGED_SERVICE_ACCOUNT는 프로젝트의 AI Platform Google 관리형 서비스 계정의 이메일 주소입니다.

이 Google 관리형 서비스 계정에는 대부분의 모델 버전에 적합한 권한이 포함되어 있습니다. 예를 들어 이 계정은 동일한 Google Cloud 프로젝트의 Cloud Storage 버킷에서 데이터를 읽을 수 있습니다.

추가 권한으로 커스텀 예측 루틴을 실행해야 하는 경우, 이 서비스 계정에 Identity and Access Management(IAM) 역할을 할당할 수 있습니다. 예를 들어 다른 Google Cloud 프로젝트의 Cloud Storage 버킷에 대한 액세스 권한을 부여할 수 있습니다.

커스텀 컨테이너에서 기본적으로 사용되는 서비스 계정

모델 버전이 커스텀 컨테이너를 사용하는 경우, 기본적으로 컨테이너는 AI Platform Google 관리형 서비스 계정을 사용하여 실행되지 않습니다. 대신 AI Platform Prediction에서 관리되는 서비스 계정을 사용하여 실행됩니다. 이 서비스 계정에는 AI Platform Prediction이 AIP_STORAGE_URI 환경 변수에 저장된 URI에서 제공하는 모델 아티팩트를 읽을 수 있는 권한이 포함됩니다.

기본적으로 커스텀 컨테이너에서 사용되는 이 서비스 계정의 권한은 맞춤설정할 수 없습니다. 커스텀 컨테이너에 사용할 수 있도록 권한을 맞춤설정하려면 다음 섹션을 읽고 모델 버전에 커스텀 서비스 계정을 사용하세요.

커스텀 서비스 계정 사용

특정 모델 버전에 대한 Google Cloud 권한을 부여하거나 제한하려면 Google 관리형 서비스 계정 대신 커스텀 서비스 계정을 사용합니다.

이를 위해서는 먼저 커스텀 서비스 계정을 설정해야 합니다. 그런 다음 모델 버전을 만들 때 커스텀 서비스 계정을 지정합니다.

커스텀 서비스 계정 설정

커스텀 서비스 계정을 설정하려면 다음 안내를 따르세요.

  1. 사용자 관리형 서비스 계정을 만듭니다.

  2. 실행 시 필요한 권한을 예측 제공 코드에 제공할 수 있도록 새 서비스 계정에 IAM 역할을 부여합니다.

  3. 사용자 관리 서비스 계정이 모델 버전과 다른 프로젝트에 있는 경우 사용자 관리 서비스 계정을 구성하여 모델 버전에 연결할 수 있습니다.

  1. 프로젝트의 AI Platform Google 관리형 서비스 계정에 새로운 커스텀 서비스 계정에 대한 서비스 계정 관리자 역할(roles/iam.serviceAccountAdmin)을 부여합니다. 이렇게 하려면 gcloud 도구를 사용하여 다음 명령어를 실행합니다.

    gcloud iam service-accounts add-iam-policy-binding \
      --role=roles/iam.serviceAccountAdmin \
      --member=serviceAccount:GOOGLE_MANAGED_SERVICE_ACCOUNT \
      CUSTOM_SERVICE_ACCOUNT
    

    이 명령어에서 다음 자리표시자를 바꿉니다.

    • GOOGLE_MANAGED_SERVICE_ACCOUNT: 프로젝트 Google Cloud ML Engine Service Agent의 이메일 주소입니다. 이 이메일 주소를 찾는 방법은 본 가이드의 이전 섹션을 참조하세요.

    • CUSTOM_SERVICE_ACCOUNT: 이 섹션의 이전 단계에서 방금 만든 새 사용자 관리형 서비스 계정의 이메일 주소입니다.

모델 버전의 커스텀 서비스 계정 지정

예측 제공 코드에 커스텀 서비스 계정에 대한 액세스 권한을 부여하려면 모델 버전을 만들 때 serviceAccount 필드를 지정합니다. 모델 버전에는 커스텀 컨테이너 또는 커스텀 예측 루틴이 사용되어야 합니다.

gcloud 도구를 사용하여 모델 버전을 만드는 경우 gcloud beta 구성요소에 --service-account 플래그를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

gcloud beta ai-platform versions create VERSION \
  --service-account CUSTOM_SERVICE_ACCOUNT \
  ...

다음을 바꿉니다.

다음 단계