Mengontrol akses ke endpoint Vertex AI

Halaman ini membahas cara mengontrol akses ke endpoint Vertex AI dengan menetapkan kebijakan IAM ke endpoint tersebut. Anda dianggap sudah memahami konsep IAM seperti kebijakan, peran, izin, dan akun utama seperti yang dijelaskan dalam Kontrol akses Vertex AI dengan IAM dan Konsep yang terkait dengan pengelolaan akses.

Kebijakan IAM mencakup satu atau beberapa binding peran yang menentukan peran IAM mana yang terkait dengan akun utama tertentu. Peran adalah kumpulan izin yang Anda berikan kepada akun utama. Vertex AI menyediakan peran bawaan yang dapat digunakan dalam kebijakan Anda. Anda juga dapat membuat peran khusus sendiri.

Mendapatkan kebijakan IAM

Anda dapat melihat kebijakan IAM saat ini di endpoint Vertex AI menggunakan REST API. Untuk melakukannya, Anda harus memiliki izin endpoints.getIamPolicy di endpoint atau project itu. Peran Administrator Vertex AI (roles/aiplatform.admin) memberikan izin ini.

REST

Untuk mendapatkan kebijakan IAM dari sebuah resource, kirim permintaan POST yang menggunakan metode getIamPolicy.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION_ID: Region tempat endpoint berada, misalnya, us-central1.
  • PROJECT_ID: ID project Google Cloud Anda.
  • ENDPOINT_ID: ID untuk endpoint.

Metode HTTP dan URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:getIamPolicy

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:getIamPolicy"

PowerShell

Jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:getIamPolicy" | Select-Object -Expand Content

Anda akan menerima respons JSON yang berisi kebijakan IAM saat ini:

{
  "version": 1,
  "etag": "BwXTmICm7mI",
  "bindings": [
    {
      "role": "roles/aiplatform.user",
      "members": [
        "user:example@example.com"
      ]
    }
  ]
}

Menetapkan kebijakan IAM

Anda dapat menetapkan kebijakan IAM pada endpoint menggunakan REST API. Untuk melakukannya, Anda harus memiliki izin endpoints.setIamPolicy di endpoint atau project itu. Peran Administrator Vertex AI (roles/aiplatform.admin) memberikan izin ini.

REST

Untuk menetapkan kebijakan IAM pada sebuah resource, kirim permintaan POST yang menggunakan metode setIamPolicy.

Menetapkan kebijakan IAM akan mengabaikan semua kebijakan yang sudah ada; perubahan tidak ditambahkan. Untuk mengubah kebijakan yang ada di sebuah resource, gunakan metode getIamPolicy untuk mendapatkan kebijakannya yang ada, lalu lakukan modifikasi. Sertakan kebijakan yang telah diubah beserta etag dalam permintaan setIamPolicy Anda.

Jika Anda menerima kode error 409, berarti permintaan setIamPolicy serentak telah memperbarui kebijakan. Gunakan metode getIamPolicy untuk mendapatkan etag kebijakan yang telah diperbarui, lalu coba lagi permintaan setIamPolicy dengan etag baru.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION_ID: Region tempat endpoint berada, misalnya, us-central1.
  • PROJECT_ID: ID project Google Cloud Anda.
  • ENDPOINT_ID: ID untuk endpoint.
  • ROLE: Peran IAM yang mencakup izin yang akan diberikan, seperti roles/aiplatform.user.
  • PRINCIPAL: Akun utama yang diberi izin peran, seperti user:myuser@example.com.
  • ETAG: Nilai string yang digunakan untuk mencegah pembaruan kebijakan secara bersamaan agar tidak menimpa satu sama lain. Nilai ini ditampilkan sebagai bagian dari respons getIamPolicy.

Metode HTTP dan URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:setIamPolicy

Isi JSON permintaan:

{
  "policy": {
    "bindings": [
      {
        "role": "ROLE",
        "members": [
          "PRINCIPAL"
        ]
      },
      ...
    ],
    "etag": "ETAG"
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:setIamPolicy"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:setIamPolicy" | Select-Object -Expand Content

Anda akan menerima respons JSON yang berisi kebijakan IAM saat ini:

{
  "version": 1,
  "etag": "BwXTmICm7mI",
  "bindings": [
    {
      "role": "roles/aiplatform.user",
      "members": [
        "user:example@example.com"
      ]
    }
  ]
}

Memverifikasi izin IAM pengguna untuk endpoint

Anda dapat memverifikasi apakah pengguna yang saat ini terautentikasi memiliki izin IAM tertentu untuk sebuah endpoint atau tidak.

REST

Untuk memverifikasi apakah pengguna memiliki izin IAM tertentu untuk resource, kirim permintaan POST yang menggunakan metode testIamPermissions. Contoh berikut memungkinkan Anda menguji apakah pengguna yang saat ini terautentikasi memiliki sekumpulan izin IAM untuk sebuah endpoint.

Sebelum menggunakan data permintaan mana pun, lakukan penggantian berikut:

  • LOCATION_ID: Region tempat endpoint berada, misalnya, us-central1.
  • PROJECT_ID: ID project Google Cloud Anda.
  • ENDPOINT_ID: ID untuk endpoint.

Metode HTTP dan URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions -d

Isi JSON permintaan:

{
  "permissions": [
    "aiplatform.googleapis.com/aiplatform.endpoints.get",
    "aiplatform.googleapis.com/aiplatform.endpoints.predict"
  ]
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions -d"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions -d" | Select-Object -Expand Content
Anda akan menerima respons JSON yang mirip dengan berikut ini. Respons ini hanya menyertakan izin dari isi JSON permintaan yang tersedia bagi pengguna yang saat ini terautentikasi.
{
  "permissions": [
    "aiplatform.googleapis.com/aiplatform.endpoints.get",
    "aiplatform.googleapis.com/aiplatform.endpoints.predict"
  ]
}

Langkah selanjutnya

Untuk mempelajari lebih lanjut cara menyiapkan project dengan kontrol akses endpoint yang lebih aman, lihat Menyiapkan project untuk tim.