Membatasi repositori jarak jauh

Dokumen ini menunjukkan cara menggunakan Layanan Kebijakan Organisasi untuk membatasi kumpulan repositori Git jarak jauh pihak ketiga yang dapat terhubung ke repositori Dataform.

Sebelum memulai

Sebelum menetapkan atau mengedit kebijakan dataform.restrictGitRemotes, temukan URL lengkap repositori Git jarak jauh yang ingin Anda tambahkan ke daftar yang diizinkan.

Untuk menemukan URL lengkap repositori Git jarak jauh yang sudah terhubung ke repositori Dataform, ikuti langkah-langkah berikut:

  1. Di Google Cloud konsol, buka halaman Dataform.

    Buka Dataform

  2. Pilih repositori, lalu klik Setelan.

    Perlu diingat bahwa URL repositori jarak jauh yang ditampilkan di Dataform halaman disingkat dan tidak dapat digunakan dalam dataform.restrictGitRemotes kebijakan.

  3. Di halaman Setelan, di bagian Setelan koneksi Git, salin nilai Sumber repositori.

    Nilai Sumber repositori adalah URL lengkap repositori jarak jauh. Anda dapat menggunakan URL ini dalam kebijakan dataform.restrictGitRemotes.

Peran yang diperlukan

Guna mendapatkan izin yang diperlukan untuk mengelola kebijakan organisasi, minta administrator untuk memberi Anda peran IAM Organization policy administrator (roles/orgpolicy.policyAdmin) di organisasi. 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 kebijakan organisasi. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk mengelola kebijakan organisasi:

  • orgpolicy.constraints.list
  • orgpolicy.policies.create
  • orgpolicy.policies.delete
  • orgpolicy.policies.list
  • orgpolicy.policies.update
  • orgpolicy.policy.get
  • orgpolicy.policy.set

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

Tentang membatasi repositori Git jarak jauh

Anda dapat menghubungkan repositori Dataform ke repositori GitHub atau GitLab.

Anda mungkin ingin membatasi kumpulan repositori jarak jauh yang dapat terhubung ke repositori Dataform untuk mencegah pelaku kejahatan mengakses codebase Dataform dan token akses Anda melalui salinan repositori yang tidak dilindungi.

Anda dapat menggunakan Layanan Kebijakan Organisasi untuk membuat kebijakan organisasi yang membatasi URL repositori Git yang dapat terhubung ke Dataform.

Batasan untuk membatasi repositori Git jarak jauh di Dataform adalah:

constraints/dataform.restrictGitRemotes

Untuk menggunakan batasan, Anda membuat kebijakan organisasi dengan daftar allowedValues URL repositori Git jarak jauh yang dapat terhubung ke repositori Dataform. Repositori Git jarak jauh diidentifikasi berdasarkan alamat URL lengkapnya.

Kebijakan dataform.restrictGitRemotes memiliki efek surut, yang berarti batasan tersebut memengaruhi repositori Dataform yang sudah ada.

Saat kebijakan organisasi diterapkan, repositori Dataform hanya dapat terhubung ke repositori Git jarak jauh yang tercantum dalam daftar allowedValues. Repositori Git jarak jauh yang tidak ditentukan secara eksplisit dalam kebijakan organisasi dilarang terhubung ke repositori Dataform.

Jika Anda tidak menetapkan kebijakan dataform.restrictGitRemotes, komunikasi antara repositori Dataform dan repositori Git jarak jauh tidak akan dibatasi.

Anda dapat menggunakan kebijakan dataform.restrictGitRemotes dengan cara berikut:

Allow all
Repositori Dataform diizinkan terhubung ke semua URL repositori jarak jauh. Pilih opsi ini jika organisasi Anda tidak ingin memblokir komunikasi apa pun dengan repositori jarak jauh. Atau, untuk mengizinkan semua URL repositori jarak jauh, Anda dapat membiarkan kebijakan organisasi tidak ditetapkan.
Daftar URL allowedValues
Repositori Dataform hanya diizinkan terhubung ke repositori jarak jauh yang ada dalam daftar yang diizinkan. Pilih opsi ini untuk mencegah eksfiltrasi data.
Deny all
Repositori Dataform tidak diizinkan terhubung ke URL jarak jauh mana pun. Pilih opsi ini jika organisasi Anda ingin memblokir semua komunikasi dan menggunakan repositori Dataform.

Spesifikasi untuk menambahkan repositori Git jarak jauh ke daftar yang diizinkan

  • Anda hanya dapat menerapkan batasan daftar ini untuk repositori GitHub dan GitLab.

  • Kebijakan organisasi diterapkan secara surut dan memengaruhi repositori Dataform yang ada.

  • Batasan ini menerima allowedValues, yang memblokir koneksi ke semua repositori Git jarak jauh lainnya, atau Deny all. Default-nya adalah Allow all - kebijakan organisasi yang tidak ditetapkan memungkinkan komunikasi dengan semua repositori Git jarak jauh. Sebaiknya tetapkan kebijakan organisasi ke allowedValues.

  • Pengelolaan dan pemeliharaan kebijakan bergantung pada Anda atau administrator yang memiliki izin yang diperlukan. Pastikan komunikasi tentang administrator kebijakan dalam organisasi Anda.

Menetapkan batasan kebijakan organisasi di tingkat organisasi

Konsol

  1. Buka halaman /Organizational Policies/Organization Policies.

    Buka Kebijakan Organisasi

  2. Jika perlu, pilih organisasi yang diperlukan dari menu drop-down project.
  3. Klik Restrict git remotes for repositories in Dataform.
  4. Klik Manage policy. Jika Anda tidak dapat mengklik tombol Manage policy, berarti Anda tidak memiliki izin yang tepat.
  5. Pilih Customize untuk menetapkan kebijakan organisasi untuk repositori Git jarak jauh tertentu.

    Sesuaikan di halaman edit kebijakan organisasi.

  6. Pilih Penegakan kebijakan dan Jenis kebijakan yang diperlukan.

  7. Untuk Nilai kebijakan, pilih Kustom.

  8. Masukkan URL lengkap repositori Git jarak jauh.

  9. Klik New policy value dan masukkan URL lengkap repositori Git jarak jauh sesuai kebutuhan.

  10. Klik Simpan untuk menerapkan batasan.

gcloud

Untuk menetapkan batasan bagi repositori Git jarak jauh, Anda memerlukan ID organisasi terlebih dahulu. Anda dapat menemukan ID organisasi dengan menjalankan perintah organizations list dan mencari ID numerik dalam respons:

gcloud organizations list

Gcloud CLI menampilkan daftar organisasi dalam format berikut:

DISPLAY_NAME               ID
example-organization1      29252605212
example-organization2      1234567890

Gunakan perintah gcloud resource-manager org-policies set-policy command untuk menetapkan kebijakan organisasi. Anda harus menyediakan kebijakan Anda sebagai file JSON atau YAML. Buat file JSON dalam format berikut:

{
  "name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes",
  "spec": {
    "rules": [
      {
        "values": {
          "allowedValues": ["https://github.com/example/allowed-repository.git"]
        }
      }
    ]
  }
}

Ganti ORGANIZATION_ID dengan ID numerik organisasi.

Jika Anda tidak ingin repositori Dataform dapat terhubung ke repositori Git jarak jauh mana pun, Anda dapat menetapkan kebijakan organisasi dengan denyAll ditetapkan ke true:

{
  "name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes",
  "spec": {
    "rules": [
      {
        "denyAll": true
      }
    ]
  }
}

Ganti ORGANIZATION_ID dengan ID numerik organisasi.

API

Gunakan setOrgPolicy() API untuk menentukan batasan Anda. Dataform diizinkan terhubung ke URL repositori Git jarak jauh dalam daftar allowedValues yang Anda tentukan.

Misalnya, berikut adalah permintaan untuk menerapkan batasan dataform.restrictGitRemotes ke organisasi tempat repositori Git jarak jauh yang dipilih dan dapat terhubung ke repositori Dataform:

POST https://orgpolicy.googleapis.com/v2/organizations/ORGANIZATION_ID/policies

dengan ORGANIZATION_ID adalah ID numerik organisasi.

Sekarang, di isi permintaan, berikan kebijakan organisasi yang diinginkan untuk batasan ini:

{
  "name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes",
  "spec": {
    "rules": [
      {
        "values": {
          "allowedValues": ["https://github.com/example/allowed-repository.git"]
        }
      }
    ]
  }
}
Replace <code><var>ORGANIZATION_ID</var></code> with the numeric ID
of the organization.

Jika Anda tidak ingin repositori Dataform dapat terhubung ke repositori Git jarak jauh mana pun, Anda dapat menetapkan kebijakan organisasi dengan denyAll ditetapkan ke true:

{
  "name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes",
  "spec": {
    "rules": [
      {
        "denyAll": true
      }
    ]
  }
}
 
Replace <code><var>ORGANIZATION_ID</var></code> with the numeric ID
of the organization.

Jika kebijakan organisasi sudah ditetapkan, Anda harus menjalankan permintaan berikut dengan definisi kebijakan organisasi sebagai isi permintaan:

PATCH https://orgpolicy.googleapis.com/v2/organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes

Menetapkan kebijakan organisasi di level project

Menetapkan kebijakan organisasi di level project akan menggantikan atau digabungkan dengan kebijakan organisasi di level organisasi. Jika digabungkan, denyAll akan lebih diprioritaskan daripada allowedValues. Misalnya, jika kebijakan organisasi di level organisasi ditetapkan ke denyAll, dan kebijakan gabungan di level project mencantumkan URL repositori jarak jauh dalam daftar allowedValues, Dataform tidak diizinkan terhubung ke repositori jarak jauh. Dalam kasus seperti itu, kebijakan organisasi di level project harus menggantikan kebijakan di level organisasi, sehingga Dataform dapat terhubung ke repositori jarak jauh. Untuk mempelajari lebih lanjut hierarki Kebijakan Organisasi, lihat Memahami evaluasi hierarki.

Konsol

Ikuti proses yang sama seperti yang didokumentasikan di bagian Menetapkan batasan kebijakan organisasi di tingkat organisasi tetapi pilih project yang diinginkan dari pemilih project, bukan organisasi.

Pemilih project.

gcloud

Gunakan perintah gcloud resource-manager org-policies set-policy command untuk menetapkan kebijakan organisasi. Anda harus menyediakan kebijakan Anda sebagai file JSON atau YAML.

Buat file JSON dalam format berikut:

{
  "name": "projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes",
  "spec": {
    "rules": [
      {
        "values": {
          "allowedValues": ["https://github.com/example/allowed-repository.git"]
        }
      }
    ]
  }
}

Ganti PROJECT_ID_OR_NUMBER dengan project ID atau nomor project untuk kebijakan organisasi ini.

Kemudian, teruskan file dengan permintaan Anda:

gcloud resource-manager org-policies set-policy MY_POLICY.JSON --project=PROJECT_ID

API

Gunakan setOrgPolicy() API untuk menentukan batasan Anda. Dataform diizinkan terhubung ke URL repositori Git jarak jauh dalam daftar allowedValues yang Anda tentukan.

Misalnya, berikut adalah permintaan untuk menerapkan batasan dataform.restrictGitRemotes ke organisasi tempat repositori Dataform hanya dapat terhubung ke repositori Git jarak jauh yang dipilih, dan kebijakan constraints/dataform.restrictGitRemotes belum ditetapkan:

POST https://orgpolicy.googleapis.com/v2/projects/PROJECT_ID_OR_NUMBER/policies

Isi permintaan berisi kebijakan organisasi yang diinginkan untuk batasan ini:

{
  "name": "projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes",
  "spec": {
    "rules": [
      {
        "values": {
          "allowedValues": ["https://github.com/example/allowed-repository.git"]
        }
      }
    ]
  }
}

Ganti PROJECT_ID_OR_NUMBER dengan project ID atau nomor project untuk permintaan ini.

Berikut adalah permintaan untuk menerapkan batasan dataform.restrictGitRemotes ke organisasi tempat repositori Dataform hanya dapat terhubung ke repositori Git jarak jauh yang dipilih, dan kebijakan constraints/dataform.restrictGitRemotes sudah ditetapkan:

PATCH https://orgpolicy.googleapis.com/v2/projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes

Isi permintaan berisi kebijakan organisasi yang diinginkan untuk batasan ini:

{
  "name": "projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes",
  "spec": {
    "rules": [
      {
        "values": {
          "allowedValues": ["https://github.com/example/allowed-repository.git"]
        }
      }
    ]
  }
}

Ganti PROJECT_ID_OR_NUMBER dengan project ID atau nomor project untuk permintaan ini.

Praktik terbaik untuk menambahkan Git jarak jauh ke daftar yang diizinkan

  • Untuk mengurangi risiko eksfiltrasi data, tetapkan batasan dataform.restrictGitRemotes secara eksplisit untuk menambahkan pilihan repositori Git jarak jauh tepercaya ke daftar yang diizinkan.

  • Jika Anda hanya menggunakan repositori Dataform yang tidak terhubung ke repositori Git jarak jauh, tetapkan batasan dataform.restrictGitRemotes ke Deny All.

  • Hindari penggunaan daftar deniedValues dengan batasan ini. Jika Anda menentukan nilai dalam daftar deniedValues, berarti hanya repositori Git jarak jauh dalam daftar deniedValues yang dibatasi koneksinya. Hal ini bisa menjadi masalah keamanan jika Anda ingin mengontrol secara pasti repositori Git jarak jauh mana yang dapat terhubung ke Dataform. Jika Anda ingin menghapus repositori Git jarak jauh tertentu dari daftar allowedValues, perbarui kebijakan organisasi yang ada untuk menghapusnya dari daftar allowedValues, bukan memasukkan repositori jarak jauh ke dalam daftar deniedValues pada hierarki yang lebih rendah.

  • Jika Anda ingin menetapkan kebijakan organisasi pada sebagian besar hierarki resource tetapi mengecualikan project tertentu, pulihkan kebijakan organisasi default menggunakan metode setOrgPolicy dengan menentukan restoreDefault objek untuk mengizinkan semua repositori Dataform di project terhubung ke repositori Git jarak jauh. Kebijakan yang saat ini diterapkan untuk project tidak terpengaruh oleh setelan default.

  • Gunakan Kebijakan Organisasi bersama dengan peran IAM untuk mengontrol akses ke codebase Dataform Anda dengan lebih baik.

  • Repositori Dataform apa pun dalam organisasi atau project dengan kebijakan organisasi yang diaktifkan tunduk pada kebijakan ini. Jika ini menjadi masalah, sebaiknya siapkan layanan dan produk lain di project lain yang tidak menerapkan kebijakan organisasi, dan gunakan VPC Bersama, jika diperlukan.

  • Sebelum menetapkan kebijakan dataform.restrictGitRemotes, pastikan komunikasi tentang kebijakan organisasi dan administratornya dalam organisasi Anda. Pengelolaan dan pemeliharaan kebijakan bergantung pada Anda atau administrator yang memiliki izin yang diperlukan.

Langkah berikutnya