Mengontrol akses ke resource Vertex AI Feature Store (Lama)

Anda dapat mengontrol akses ke resource Vertex AI Feature Store (Lama) dengan menetapkan kebijakan IAM di berbagai level hierarki resource. Contoh:

  • IAM kebijakan level project berlaku untuk semua resource dalam sebuah project. Anda dapat menetapkan kebijakan tingkat project untuk memberikan izin kepada pengguna agar dapat membaca semua featurestore di project Anda.

  • Kebijakan IAM tingkat resource memungkinkan Anda menentukan pengguna mana yang dapat mengakses resource tertentu. Untuk sebagian pengguna, Anda dapat menetapkan kebijakan tingkat resource untuk memberikan izin tulis ke featurestore tertentu dalam project Anda.

Anda dapat menetapkan kebijakan Identity and Access Management (IAM) tingkat resource pada resource Vertex AI Feature Store (Lama) berikut:

  • Featurestore: Jika Anda menetapkan kebijakan Identity and Access Management di featurestore, kebijakan akan berlaku untuk featurestore dan semua jenis entity yang dibuat di featurestore tersebut.

  • Jenis entity: Jika Anda menetapkan kebijakan Identity and Access Management pada suatu jenis entity, kebijakan hanya berlaku untuk jenis entity dan featurestore tempat jenis entity dibuat.

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 standar yang dapat digunakan dalam kebijakan Anda. Anda juga dapat membuat peran khusus sendiri.

Pertimbangan

Anda tidak dapat menetapkan kebijakan resource bersyarat. Misalnya, Anda tidak dapat membuat kebijakan yang memberikan akses ke resource apa pun yang memiliki atau akan memiliki nama yang dimulai dengan string tertentu seperti testing.

Contoh kasus penggunaan

Sebagai contoh, bayangkan organisasi Anda memiliki dua kumpulan pengguna. Satu set akan mengelola infrastruktur inti Anda dalam peran admin DevOps. Set lainnya mengelola jenis entity tertentu dan fiturnya, seperti data engineer.

Admin DevOps mengelola featurestore dan jenis entity di level project. Saat data engineer meminta jenis entity baru, admin DevOps dapat membuat dan mendelegasikan kepemilikan jenis entity tersebut kepada engineer data. Data engineer dapat mengelola fitur dengan bebas dalam jenis entity yang mereka miliki, tetapi mereka tidak dapat beroperasi di featurestore atau jenis entity lainnya. Kontrol ini, misalnya, memungkinkan admin DevOps membatasi akses ke jenis entitas yang berisi informasi sensitif.

Dalam skenario ini, admin DevOps memiliki peran aiplatform.featurestoreAdmin di level project. Kemudian, saat data engineer meminta jenis entitas baru, administratormembuat jenis entitas baru dan kemudian menetapkanaiplatform.entityTypeOwner peran kepada data engineer di level jenis entity (sebagai kebijakan tingkat resource).

Mendapatkan kebijakan IAM

Anda dapat melihat kebijakan IAM saat ini pada featurestore atau jenis entity menggunakan konsol Google Cloud atau API.

UI web

  1. Di bagian Vertex AI pada Konsol Google Cloud, buka halaman Features.

    Buka halaman Fitur

  2. Pilih region dari menu drop-down Region.
  3. Di tabel fitur, pilih featurestore atau jenis entity dari kolom Featurestore atau Jenis entitas.
  4. Klik Izin.
  5. Untuk menampilkan izin tingkat resource, nonaktifkan Tampilkan izin yang diwarisi.

    Akun utama yang memiliki akses ke resource yang dipilih dikelompokkan menurut peran.

  6. Luaskan peran untuk melihat akun utama yang ditetapkan ke peran tersebut.

REST

Untuk mendapatkan kebijakan IAM dari resource, kirim permintaan POST yang menggunakan metode getIamPolicy. Contoh berikut mendapatkan kebijakan jenis entity.

Sebelum menggunakan salah satu data permintaan, buat pengganti berikut:

  • LOCATION_ID: Region tempat featurestore berada, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATURESTORE_ID: ID featurestore.
  • ENTITY_TYPE_ID: ID jenis entity.

Metode HTTP dan URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:getIamPolicy" | Select-Object -Expand Content

Anda akan melihat respons JSON seperti berikut:

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

Menetapkan kebijakan IAM

Anda dapat menetapkan kebijakan IAM pada featurestore atau jenis entity.

UI web

  1. Di bagian Vertex AI pada Konsol Google Cloud, buka halaman Features.

    Buka halaman Fitur

  2. Pilih region dari menu drop-down Region.
  3. Di tabel fitur, pilih featurestore atau jenis entity dari kolom Featurestore atau Jenis entitas.
  4. Klik Izin.
  5. Klik Tambahkan akun utama.
  6. Tentukan akun utama dan satu atau beberapa peran yang akan dikaitkan dengan akun utama.
  7. Klik Save.

REST

Untuk menetapkan kebijakan IAM pada resource, kirim permintaan POST yang menggunakan metode setIamPolicy. Contoh berikut menetapkan kebijakan pada jenis entity.

Menetapkan kebijakan IAM akan menggantikan semua kebijakan yang sudah ada (perubahan tidak ditambahkan). Jika Anda ingin mengubah kebijakan resource yang ada, gunakan metode getIamPolicy untuk mendapatkan kebijakan yang ada, lalu lakukan modifikasi. Sertakan kebijakan yang telah diubah beserta etag dalam permintaan setIamPolicy Anda.

Jika Anda menerima kode error 409, berarti ada permintaan SetIamPolicy serentak yang memperbarui kebijakan. Buat GetIamPolicy untuk mendapatkan etag kebijakan yang diperbarui, lalu coba lagi permintaan SetIamPolicy dengan menyertakan etag baru.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION_ID: Region tempat featurestore berada, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATURESTORE_ID: ID featurestore.
  • ENTITY_TYPE_ID: ID jenis entity.
  • ROLE: Peran IAM yang mencakup izin yang akan diberikan, seperti roles/aiplatform.featurestoreDataViewer.
  • 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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:setIamPolicy" | Select-Object -Expand Content

Anda akan melihat respons JSON seperti berikut:

{
  "version": 1,
  "etag": "BwXTmICm7mI",
  "bindings": [
    {
      "role": "roles/aiplatform.entityTypeOwner",
      "members": [
        "user:user1@example.com"
      ]
    },
    {
      "role": "roles/aiplatform.featurestoreDataViewer",
      "members": [
        "user:user2@example.com",
        "user:user3@example.com"
      ]
    },
    {
      "role": "roles/aiplatform.featurestoreDataWriter",
      "members": [
        "user:user4@example.com",
      ]
    }
  ]
}

Memverifikasi izin IAM untuk resource

Anda dapat memverifikasi apakah pengguna yang saat ini diautentikasi memiliki izin IAM khusus untuk featurestore atau jenis entity.

REST

Untuk memastikan apakah pengguna memiliki izin IAM tertentu untuk suatu resource, kirim permintaan POST yang menggunakan metode testIamPermissions. Contoh berikut memungkinkan Anda menguji apakah pengguna yang saat ini diautentikasi memiliki sekumpulan izin IAM untuk jenis entity.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION_ID: Region tempat featurestore berada, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATURESTORE_ID: ID featurestore.
  • ENTITY_TYPE_ID: ID jenis entity.

Metode HTTP dan URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d

Isi JSON permintaan:

{
  "permissions": [
    "aiplatform.googleapis.com/entityTypes.get",
    "aiplatform.googleapis.com/entityTypes.readFeatureValues",
    "aiplatform.googleapis.com/entityTypes.writeFeatureValues"
  ]
}

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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/entityTypes.get",
    "aiplatform.googleapis.com/entityTypes.readFeatureValues",
    "aiplatform.googleapis.com/entityTypes.writeFeatureValues"
  ]
}