Pelatihan dengan akun layanan khusus

Anda dapat mengonfigurasi AI Platform Training untuk menggunakan akun layanan pilihan Anda saat menjalankan aplikasi pelatihan Anda. Dengan akun layanan kustom, Anda dapat menyesuaikan resource Google Cloud yang dapat diakses kode pelatihan Anda tanpa memberikan izin yang terlalu luas ke akun layanan yang digunakan secara default oleh Pelatihan AI Platform Anda. Selain itu, Anda dapat menggunakan akun layanan kustom untuk memberi kode Anda akses ke layanan Google Cloud tambahan seperti Secret Manager.

Panduan ini berfokus pada izin resource Pelatihan AI Platform untuk mengakses resource Google Cloud lainnya. Untuk mempelajari izin yang Anda perlukan untuk mengakses sendiri resource Pelatihan AI Platform, baca Kontrol akses.

Memahami akun layanan yang dikelola Google

Secara default, AI Platform Training menggunakan akun layanan yang dikelola Google untuk menjalankan tugas pelatihan. Akun layanan ini diidentifikasi oleh alamat email dengan format berikut:

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

PROJECT_NUMBER diganti dengan nomor project untuk project Google Cloud Anda.

Temukan akun layanan yang sesuai untuk project Anda di Google Cloud Console atau dengan menggunakan Google Cloud CLI:

Konsol Google Cloud

Buka halaman IAM di Konsol Google Cloud, pilih Include Google- provided role Grants dan temukan akun utama yang cocok dengan format alamat email yang dijelaskan sebelumnya di bagian ini. Akun layanan juga memiliki nama Google Cloud ML Engine Service Agent.

Buka halaman IAM

gcloud

Jalankan perintah berikut di lingkungan Shell tempat Anda menginisialisasi gcloud CLI:

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

Ganti PROJECT_ID dengan ID project Google Cloud Anda.

Perintah ini menghasilkan output berikut:

serviceAccount:GOOGLE_MANAGED_SERVICE_ACCOUNT

GOOGLE_MANAGED_SERVICE_ACCOUNT adalah alamat email akun layanan yang dikelola Google AI Platform pada project Anda.

Akun layanan yang dikelola Google ini memiliki izin yang sesuai untuk sebagian besar tugas pelatihan. Misalnya, aplikasi dapat membaca dari dan menulis ke bucket Cloud Storage di project Google Cloud yang sama.

Jika aplikasi pelatihan perlu dijalankan dengan izin tambahan, Anda dapat menetapkan peran Identity and Access Management (IAM) tambahan ke akun layanan ini. Misalnya, Anda dapat memberinya akses ke bucket Cloud Storage di project Google Cloud lainnya.

Menggunakan akun layanan kustom

Jika Anda ingin memberikan atau membatasi izin Google Cloud untuk tugas pelatihan tertentu, gunakan akun layanan kustom sebagai pengganti akun layanan yang dikelola Google.

Untuk melakukannya, siapkan akun layanan kustom terlebih dahulu. Kemudian, tentukan akun layanan kustom saat Anda membuat tugas pelatihan.

Menyiapkan akun layanan kustom

Untuk menyiapkan akun layanan kustom, lakukan hal berikut:

  1. Buat akun layanan yang dikelola pengguna.

  2. Berikan peran IAM akun layanan baru Anda untuk memberi aplikasi pelatihan Anda izin apa pun yang diperlukan saat aplikasi berjalan.

  3. Jika akun layanan yang dikelola pengguna berada dalam project yang berbeda dengan tugas pelatihan Anda, konfigurasikan akun layanan yang dikelola pengguna sehingga Anda dapat menambahkannya ke tugas pelatihan.

Menentukan akun layanan kustom untuk tugas pelatihan Anda

Untuk mengonfigurasi AI Platform Training agar menggunakan akun layanan kustom Anda saat menjalankan aplikasi pelatihan, tentukan kolom trainingInput.serviceAccount saat Anda membuat tugas pelatihan.

Jika menggunakan gcloud CLI untuk membuat tugas pelatihan, Anda harus menggunakan config.yaml file untuk menentukan kolom ini. Contoh:

trainingInput:
  serviceAccount: CUSTOM_SERVICE_ACCOUNT

Ganti CUSTOM_SERVICE_ACCOUNT dengan alamat email akun layanan yang dikelola pengguna yang Anda siapkan di bagian sebelumnya dalam panduan ini.

Mengakses layanan Google Cloud dari kode pelatihan

Dalam kode pelatihan, jika ingin mengakses layanan Google Cloud lainnya dari tugas pelatihan Anda, gunakan Kredensial Default Aplikasi (ADC). Banyak library klien Google Cloud mengautentikasi dengan ADC secara default. Anda tidak perlu mengonfigurasi variabel lingkungan apa pun; AI Platform Training akan otomatis mengonfigurasi ADC untuk mengautentikasi sebagai akun layanan kustom yang Anda tentukan di langkah sebelumnya.

Namun, saat Anda menggunakan library klien Google Cloud di kode pelatihan, library tersebut mungkin tidak terhubung ke project Google Cloud yang benar secara default. Jika log pelatihan Anda melaporkan error izin, mungkin inilah masalahnya. Saat Anda membuat tugas pelatihan, Pelatihan AI Platform tidak akan menjalankan kode pelatihan Anda secara langsung di project Google Cloud Anda; tetapi Pelatihan AI Platform menjalankan kode Anda dalam project terpisah yang dikelola oleh Google. AI Platform Training menggunakan project ini secara eksklusif untuk operasi yang terkait dengan project Anda. Oleh karena itu, jangan mencoba menyimpulkan project ID dari lingkungan dalam kode pelatihan Anda; tentukan project ID secara eksplisit.

Jika tidak ingin melakukan hardcode pada project ID dalam kode pelatihan, Anda dapat mereferensikan variabel lingkungan CLOUD_ML_PROJECT_ID. AI Platform Training menetapkan variabel lingkungan ini di setiap container pelatihan agar memuat nomor project project tempat Anda memulai pelatihan kustom. Banyak alat Google Cloud yang dapat menerima nomor project ke mana pun alat tersebut mengambil ID project.

Misalnya, pertimbangkan untuk menjalankan tugas pelatihan di project Google Cloud dengan ID PROJECT_ID. Jika Anda ingin menggunakan Klien Python untuk Google BigQuery guna mengakses tabel BigQuery dalam project yang sama, jangan coba menyimpulkan project dalam kode pelatihan Anda:

Pemilihan project secara implisit

from google.cloud import bigquery

client = bigquery.Client()

Sebagai gantinya, gunakan kode yang secara eksplisit memilih project:

Pemilihan project secara eksplisit

from google.cloud import bigquery

project_number = os.environ["CLOUD_ML_PROJECT_ID"]

client = bigquery.Client(project=project_number)

Langkah selanjutnya