Meninjau insight kebijakan untuk set data BigQuery

Halaman ini menunjukkan cara mengelola insight kebijakan tingkat set data, yang merupakan temuan berbasis machine learning tentang penggunaan izin untuk set data BigQuery Anda. Insight kebijakan dapat membantu Anda mengidentifikasi akun utama yang memiliki izin yang tidak diperlukan.

Halaman ini berfokus pada insight kebijakan untuk set data. Pemberi rekomendasi juga menawarkan insight kebijakan untuk jenis resource berikut:

Insight kebijakan tingkat set data terkadang ditautkan ke rekomendasi peran. Rekomendasi peran menyarankan tindakan yang dapat Anda lakukan untuk memperbaiki masalah yang diidentifikasi oleh insight kebijakan tingkat set data.

Sebelum memulai

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan guna mengelola insight kebijakan tingkat set data, minta administrator untuk memberi Anda peran IAM berikut di project Anda:

  • Pemilik Data BigQuery (`roles/bigquery.dataOwner`)
  • IAM Recommender Admin (`roles/recommender.iamAdmin`)
  • Kelola insight kebijakan tingkat set data dengan gcloud CLI atau REST API: Konsumen Penggunaan Layanan (`roles/serviceusage.serviceUsageConsumer`)

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk mengelola insight kebijakan tingkat set data. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk mengelola insight kebijakan tingkat set data:

  • Melihat insight kebijakan tingkat set data:
    • recommender.iamPolicyInsights.get
    • recommender.iamPolicyInsights.list
  • Mengubah insight kebijakan tingkat set data: recommender.iamPolicyInsights.update
  • Kelola insight kebijakan tingkat set data dengan gcloud CLI atau REST API: serviceusage.services.use

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Mencantumkan insight kebijakan tingkat set data

Untuk mencantumkan semua insight kebijakan tingkat set data untuk project Anda, gunakan salah satu metode berikut:

gcloud

Gunakan perintah gcloud recommender insights list untuk melihat semua insight kebijakan tingkat set data untuk project Anda.

Sebelum menjalankan perintah, ganti nilai berikut:

  • PROJECT_ID: ID project yang insight-nya ingin Anda cantumkan.
  • LOCATION: Lokasi set data yang insight-nya ingin Anda cantumkan.
gcloud recommender insights list --insight-type=google.iam.policy.Insight \
    --project=PROJECT_ID \
    --location=LOCATION\
    --filter="insightSubtype:PERMISSIONS_USAGE_BIGQUERY_DATASET"

Output ini mencantumkan semua insight kebijakan tingkat set data untuk project Anda di lokasi yang ditentukan. Contoh:

INSIGHT_ID                            CATEGORY  INSIGHT_STATE  LAST_REFRESH_TIME     SEVERITY  INSIGHT_SUBTYPE                     DESCRIPTION
101d03ad-6148-4628-943e-fcf1a3af6b57  SECURITY  ACTIVE         2024-02-02T08:00:00Z  LOW       PERMISSIONS_USAGE_BIGQUERY_DATASET  0 of the permissions in this role binding were used in the past 90 days.
15133dd9-4cbc-41e9-8990-b189241676d8  SECURITY  ACTIVE         2024-02-02T08:00:00Z  LOW       PERMISSIONS_USAGE_BIGQUERY_DATASET  0 of the permissions in this role binding were used in the past 90 days.
1590aeae-d5bf-4e3d-b7d5-e230212f5faf  SECURITY  ACTIVE         2024-02-02T08:00:00Z  LOW       PERMISSIONS_USAGE_BIGQUERY_DATASET  4 of the permissions in this role binding were used in the past 90 days.
280e5a14-4d09-4ac6-8e14-be7407611ad7  SECURITY  ACTIVE         2024-02-02T08:00:00Z  LOW       PERMISSIONS_USAGE_BIGQUERY_DATASET  0 of the permissions in this role binding were used in the past 90 days.
34102078-085f-45d3-ae72-81da16c75781  SECURITY  ACTIVE         2024-02-02T08:00:00Z  LOW       PERMISSIONS_USAGE_BIGQUERY_DATASET  10 of the permissions in this role binding were used in the past 90 days.

REST

Metode insights.list Recommender API mencantumkan semua insight kebijakan tingkat set data untuk project Anda.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID project yang insight-nya ingin Anda cantumkan.
  • LOCATION: Lokasi set data yang insight-nya ingin Anda cantumkan.

Metode HTTP dan URL:

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights?filter=insightSubtype%20%3D%20PERMISSIONS_USAGE_BIGQUERY_DATASET

Untuk mengirim permintaan, perluas salah satu opsi berikut:

Respons ini mencantumkan semua insight kebijakan tingkat set data untuk project Anda di lokasi yang ditentukan. Contoh:

{
  "insights": [
    {
      "name": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57",
      "description": "0 of the permissions in this role binding were used in the past 90 days.",
      "content": {
        "role": "roles/bigquery.dataEditor",
        "member": "projectEditor:my-project",
        "condition": {
          "expression": "",
          "title": "",
          "description": "",
          "location": ""
        },
        "exercisedPermissions": [],
        "inferredPermissions": [],
        "currentTotalPermissionsCount": "37"
      },
      "lastRefreshTime": "2024-02-02T08:00:00Z",
      "observationPeriod": "7779600s",
      "stateInfo": {
        "state": "ACTIVE"
      },
      "category": "SECURITY",
      "associatedRecommendations": [
        {
          "recommendation": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f952-1ceb-488e-9e49-f17eb21f6e5e"
        }
      ],
      "targetResources": [
        "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
      ],
      "insightSubtype": "PERMISSIONS_USAGE_BIGQUERY_DATASET",
      "etag": "\"35d4af47524d3f0c\"",
      "severity": "LOW"
    },
    {
      "name": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/15133dd9-4cbc-41e9-8990-b189241676d8",
      "description": "0 of the permissions in this role binding were used in the past 90 days.",
      "content": {
        "role": "roles/bigquery.dataViewer",
        "member": "projectViewer:my-project",
        "condition": {
          "expression": "",
          "title": "",
          "description": "",
          "location": ""
        },
        "exercisedPermissions": [],
        "inferredPermissions": [],
        "currentTotalPermissionsCount": "17"
      },
      "lastRefreshTime": "2024-02-02T08:00:00Z",
      "observationPeriod": "7779600s",
      "stateInfo": {
        "state": "ACTIVE"
      },
      "category": "SECURITY",
      "associatedRecommendations": [
        {
          "recommendation": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/bc9b4c28-cc93-4a91-97ea-ff67e3cef1b4"
        }
      ],
      "targetResources": [
        "//bigquery.googleapis.com/projects/my-project/datasets/dataset-2"
      ],
      "insightSubtype": "PERMISSIONS_USAGE_BIGQUERY_DATASET",
      "etag": "\"eafa79df1b329063\"",
      "severity": "LOW"
    }
  ]
}

Untuk mempelajari komponen insight lebih lanjut, lihat Meninjau insight kebijakan tingkat set data di halaman ini.

Mendapatkan satu insight kebijakan tingkat set data

Untuk mendapatkan informasi selengkapnya tentang satu insight, termasuk deskripsi, status, dan rekomendasi apa pun yang terkait dengan insight tersebut, gunakan salah satu metode berikut:

gcloud

Gunakan perintah gcloud recommender insights describe dengan ID insight Anda untuk melihat informasi tentang satu insight.

  • INSIGHT_ID: ID insight yang ingin Anda lihat. Untuk menemukan ID, cantumkan insight untuk project Anda.
  • PROJECT_ID: ID project yang insight-nya ingin Anda kelola.
  • LOCATION: Lokasi set data yang insight-nya ingin Anda dapatkan.
gcloud recommender insights describe INSIGHT_ID \
    --insight-type=google.iam.policy.Insight \
    --project=PROJECT_ID \
    --location=LOCATION

Output akan menampilkan insight secara mendetail. Misalnya, insight berikut menunjukkan bahwa semua pengguna dengan peran Editor di project my-project (projectEditor:my-project) memiliki peran BigQuery Data Editor (roles/bigquery.dataEditor) di set data dataset-1, tetapi tidak ada izin dalam peran tersebut yang digunakan dalam 90 hari terakhir:

associatedRecommendations:
- recommendation: projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f951-1ceb-488e-9e49-f17eb21f6e5e
category: SECURITY
content:
  condition:
    description: ''
    expression: ''
    location: ''
    title: ''
  currentTotalPermissionsCount: '37'
  exercisedPermissions: []
  inferredPermissions: []
  member: projectEditor:my-project
  role: roles/bigquery.dataEditor
description: 0 of the permissions in this role binding were used in the past 90 days.
etag: '"5f2f352a738f7a24"'
insightSubtype: PERMISSIONS_USAGE_BIGQUERY_DATASET
lastRefreshTime: '2024-02-04T08:00:00Z'
name: projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57
observationPeriod: 7776000s
severity: LOW
stateInfo:
  state: ACTIVE
targetResources:
- //bigquery.googleapis.com/projects/my-project/datasets/dataset-1

Untuk mempelajari komponen insight lebih lanjut, lihat Meninjau insight kebijakan tingkat set data di halaman ini.

REST

Metode insights.get Recommender API mendapatkan satu insight.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID project yang insight-nya ingin Anda kelola.
  • LOCATION: Lokasi set data yang insight-nya ingin Anda dapatkan.
  • INSIGHT_ID: ID insight yang ingin Anda lihat. Jika tidak mengetahui insight ID, Anda dapat menemukannya dengan mencantumkan insight di project. ID insight adalah semuanya setelah insights/ di kolom name untuk insight.

Metode HTTP dan URL:

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID

Untuk mengirim permintaan, perluas salah satu opsi berikut:

Responsnya berisi insight. Misalnya, insight berikut menunjukkan bahwa semua pengguna dengan peran Editor di project my-project (projectEditor:my-project) memiliki peran BigQuery Data Editor (roles/bigquery.dataEditor) di set data dataset-1, tetapi tidak ada izin dalam peran tersebut yang digunakan dalam 90 hari terakhir:

{
  "name": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57",
  "description": "0 of the permissions in this role binding were used in the past 90 days.",
  "content": {
    "role": "roles/bigquery.dataEditor",
    "member": "projectEditor:my-project",
    "condition": {
      "expression": "",
      "title": "",
      "description": "",
      "location": ""
    },
    "exercisedPermissions": [],
    "inferredPermissions": [],
    "currentTotalPermissionsCount": "37"
  },
  "lastRefreshTime": "2024-02-02T08:00:00Z",
  "observationPeriod": "7779600s",
  "stateInfo": {
    "state": "ACTIVE"
  },
  "category": "SECURITY",
  "associatedRecommendations": [
    {
      "recommendation": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f952-1ceb-488e-9e49-f17eb21f6e5e"
    }
  ],
  "targetResources": [
    "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
  ],
  "insightSubtype": "PERMISSIONS_USAGE_BIGQUERY_DATASET",
  "etag": "\"35d4af47524d3f0c\"",
  "severity": "LOW"
}

Untuk mempelajari komponen insight lebih lanjut, lihat Meninjau insight kebijakan tingkat set data di halaman ini.

Meninjau insight kebijakan tingkat set data

Setelah mendapatkan satu insight, Anda dapat meninjau kontennya untuk memahami pola penggunaan resource yang disoroti.

Konten insight ditentukan oleh subjenisnya. Insight kebijakan tingkat set data (google.iam.policy.Insight) memiliki subjenis PERMISSIONS_USAGE_BIGQUERY_DATASET.

Insight PERMISSIONS_USAGE_BIGQUERY_DATASET memiliki komponen berikut, tidak harus dalam urutan ini:

  • associatedRecommendations: ID untuk rekomendasi apa pun yang terkait dengan insight. Jika tidak ada rekomendasi yang terkait dengan insight, kolom ini akan kosong.
  • category: Kategori untuk insight IAM selalu SECURITY.
  • content: Melaporkan penggunaan izin akun utama untuk peran tertentu. Kolom ini berisi komponen berikut:

    • condition: Setiap kondisi yang dilampirkan ke binding yang memberikan peran kepada akun utama. Jika tidak ada kondisi, kolom ini akan berisi kondisi kosong.
    • exercisedPermissions: Izin dalam peran yang digunakan akun utama selama periode pengamatan.
    • inferredPermissions: Izin dalam peran yang telah ditentukan Recommender, melalui ML, yang kemungkinan diperlukan akun utama berdasarkan izin yang digunakannya.
    • member: Akun utama yang penggunaan izinnya dianalisis.
    • role: Peran yang penggunaan izinnya dianalisis.
  • description: Ringkasan insight yang dapat dibaca manusia.
  • etag: ID unik untuk status insight saat ini. Setiap kali insight berubah, nilai etag baru akan ditetapkan.

    Untuk mengubah status insight, Anda harus memberikan etag insight yang ada. Penggunaan etag membantu memastikan bahwa setiap operasi hanya dilakukan jika insight belum berubah sejak Anda terakhir kali mengambilnya.

  • insightSubtype: Subjenis insight.
  • lastRefreshTime: Tanggal saat insight terakhir diperbarui, yang menunjukkan keaktualan data yang digunakan untuk menghasilkan insight.
  • name: Nama insight, dalam format berikut:

    projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID

    Placeholder memiliki nilai berikut:

    • PROJECT_ID: ID project tempat insight dihasilkan.
    • LOCATION: Lokasi set data yang menjadi tujuan insight.
    • INSIGHT_ID: ID unik untuk insight.
  • observationPeriod: Jangka waktu yang mengarah ke insight. Data sumber yang digunakan untuk menghasilkan insight berakhir pada lastRefreshTime dan dimulai pada lastRefreshTime dikurangi observationPeriod.
  • stateInfo: Insight akan melalui beberapa transisi status setelah diusulkan:

    • ACTIVE: Insight telah dibuat, tetapi tidak ada tindakan yang dilakukan, atau tindakan telah dilakukan tanpa memperbarui status insight. Insight aktif diperbarui saat data pokok berubah.
    • ACCEPTED: Beberapa tindakan telah dilakukan berdasarkan insight. Insight akan diterima jika rekomendasi terkait ditandai CLAIMED, SUCCEEDED, atau FAILED, atau insight diterima secara langsung. Saat insight berada dalam status ACCEPTED, konten insight tidak dapat berubah. Insight yang diterima disimpan selama 90 hari setelah diterima.
  • targetResources: Nama resource lengkap set data yang menjadi tujuan insight. Misalnya, //bigquery.googleapis.com/projects/my-project/datasets/my-dataset.

Menandai insight kebijakan tingkat set data sebagai ACCEPTED

Jika Anda mengambil tindakan berdasarkan insight aktif, Anda dapat menandai insight tersebut sebagai ACCEPTED. Status ACCEPTED memberi tahu Recommender API bahwa Anda telah mengambil tindakan berdasarkan insight ini, yang membantu meningkatkan kualitas rekomendasi Anda.

Insight yang diterima disimpan selama 90 hari setelah ditandai sebagai ACCEPTED.

gcloud

Gunakan perintah gcloud recommender insights mark-accepted dengan ID insight Anda untuk menandai insight sebagai ACCEPTED.

  • INSIGHT_ID: ID insight yang ingin Anda lihat. Untuk menemukan ID, cantumkan insight untuk project Anda.
  • PROJECT_ID: ID project yang insight-nya ingin Anda kelola.
  • LOCATION: Lokasi set data yang insight-nya ingin Anda tandai sebagai ACCEPTED.
  • ETAG: ID untuk versi insight. Untuk mendapatkan etag, lakukan hal berikut:

    1. Dapatkan insight menggunakan perintah gcloud recommender insights describe.
    2. Temukan dan salin nilai etag dari output, termasuk tanda kutip yang mengapit. Contoh, "d3cdec23cc712bd0".
gcloud recommender insights mark-accepted INSIGHT_ID \
    --insight-type=google.iam.policy.Insight \
    --project=PROJECT_ID \
    --location=LOCATION \
    --etag=ETAG

Output menampilkan insight, sekarang dengan status ACCEPTED:

associatedRecommendations:
- recommendation: projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f951-1ceb-488e-9e49-f17eb21f6e5e
category: SECURITY
content:
  condition:
    description: ''
    expression: ''
    location: ''
    title: ''
  currentTotalPermissionsCount: '37'
  exercisedPermissions: []
  inferredPermissions: []
  member: projectEditor:my-project
  role: roles/bigquery.dataEditor
description: 0 of the permissions in this role binding were used in the past 90 days.
etag: '"5f2f352a738f7a24"'
insightSubtype: PERMISSIONS_USAGE_BIGQUERY_DATASET
lastRefreshTime: '2024-02-04T08:00:00Z'
name: projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57
observationPeriod: 7776000s
severity: LOW
stateInfo:
  state: ACCEPTED
targetResources:
- //bigquery.googleapis.com/projects/my-project/datasets/dataset-1

Untuk mempelajari info status insight lebih lanjut, lihat Meninjau insight kebijakan tingkat set data di halaman ini.

REST

Metode insights.markAccepted Recommender API menandai insight sebagai ACCEPTED.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID project yang insight-nya ingin Anda kelola.
  • LOCATION: Lokasi set data yang insight-nya ingin Anda tandai sebagai ACCEPTED.
  • INSIGHT_ID: ID insight yang ingin Anda lihat. Jika tidak mengetahui insight ID, Anda dapat menemukannya dengan mencantumkan insight di project. ID insight adalah semuanya setelah insights/ di kolom name untuk insight.
  • ETAG: ID untuk versi insight. Untuk mendapatkan etag, lakukan hal berikut:
    1. Dapatkan insight menggunakan metode insights.get.
    2. Temukan dan salin nilai etag dari respons.

Metode HTTP dan URL:

POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID:markAccepted

Meminta isi JSON:

{
  "etag": "ETAG"
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Responsnya berisi insight, sekarang dengan status ACCEPTED:

{
  "name": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57",
  "description": "0 of the permissions in this role binding were used in the past 90 days.",
  "content": {
    "role": "roles/bigquery.dataEditor",
    "member": "projectEditor:my-project",
    "condition": {
      "expression": "",
      "title": "",
      "description": "",
      "location": ""
    },
    "exercisedPermissions": [],
    "inferredPermissions": [],
    "currentTotalPermissionsCount": "37"
  },
  "lastRefreshTime": "2024-02-02T08:00:00Z",
  "observationPeriod": "7779600s",
  "stateInfo": {
    "state": "ACCEPTED"
  },
  "category": "SECURITY",
  "associatedRecommendations": [
    {
      "recommendation": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f952-1ceb-488e-9e49-f17eb21f6e5e"
    }
  ],
  "targetResources": [
    "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1"
  ],
  "insightSubtype": "PERMISSIONS_USAGE_BIGQUERY_DATASET",
  "etag": "\"35d4af47524d3f0c\"",
  "severity": "LOW"
}

Untuk mempelajari info status insight lebih lanjut, lihat Meninjau insight kebijakan tingkat set data di halaman ini.

Langkah selanjutnya