Kontrol akses berbasis IP

Managed Lustre menyediakan kontrol akses berbasis IP melalui fitur root squash.

Root squash adalah fitur keamanan yang mencegah pengguna root di VM klien memiliki hak istimewa root pada sistem file Managed Lustre. Saat pengguna root mengakses sistem file Managed Lustre, hak istimewanya akan "dihancurkan" menjadi hak istimewa pengguna yang kurang istimewa.

Root squash dapat dikonfigurasi untuk instance Managed Lustre baru atau yang sudah ada. Anda dapat menerapkan setelan root squash default ke semua klien, atau menentukan aturan kustom untuk klien tertentu.

Secara default, root squash tidak dikonfigurasi pada instance Managed Lustre.

Batasan dan rekomendasi keamanan

Membatasi akses root pada VM klien

Mekanisme terbaik untuk membatasi akses root adalah dengan melarang pengguna menjadi root sejak awal. Memberikan hak istimewa root kepada pengguna di VM dapat membuat Anda berisiko mengalami persistensi: pengguna dapat menyalahgunakan hak istimewa ini untuk membuat akun pengguna baru atau menginstal backdoor untuk mempertahankan akses persisten ke VM. Lihat Praktik terbaik untuk mengontrol akses login SSH untuk mengetahui petunjuk cara membatasi akses root.

Jika Anda tidak dapat mencegah pengguna memiliki hak istimewa root di VM, fitur kontrol akses berbasis IP Managed Lustre dapat membatasi hak istimewa pengguna root saat mengakses instance Managed Lustre. Namun, pemeriksaan akses ini adalah upaya terbaik dan fitur ini tidak dimaksudkan sebagai jaminan keamanan. Anda harus mengandalkan aturan firewall VPC sebagai perimeter keamanan utama dan memastikan hanya VM klien tepercaya yang menggunakan image VM tepercaya yang memiliki akses jaringan ke instance Managed Lustre Anda. Lihat Praktik terbaik keamanan Google Cloud untuk mengetahui informasi selengkapnya.

Menonaktifkan penerusan IP

Konfigurasi Compute Engine default memungkinkan instance mengaktifkan penerusan IP. Untuk mencegah pengguna menghindari kebijakan root squash dengan meniru alamat IP sumber yang berbeda, Anda harus menonaktifkan penerusan IP menggunakan kebijakan organisasi constraints/compute.vmCanIpForward. Lihat Membuat dan mengelola kebijakan organisasi untuk mengetahui petunjuknya.

Mengonfigurasi root squash default

Untuk menerapkan root squash ke semua klien yang terhubung ke instance, tentukan UID dan GID squash default, lalu tetapkan mode squash ke ROOT_SQUASH. Nilai yang umum digunakan untuk UID dan GID adalah 65534, yang diterjemahkan ke pengguna nobody.

Perhatikan bahwa secara default, pengguna nobody hanya dibatasi untuk akses baca dan eksekusi. Hanya pengguna root dan anggota grup Owner yang memiliki akses tulis ke sistem file.

Membuat instance

Untuk membuat instance dengan root squash default:

gcloud

Gunakan flag --default-squash-mode, --default-squash-uid, dan --default-squash-gid untuk menetapkan nilai default:

gcloud lustre instances create INSTANCE_NAME \
  --project=PROJECT_ID \
  --location=LOCATION \
  --network=NETWORK_NAME \
  --per-unit-storage-throughput=PER_UNIT_STORAGE_THROUGHPUT \
  --capacity-gib=CAPACITY \
  --filesystem=FS_NAME \
  --default-squash-mode=ROOT_SQUASH \
  --default-squash-uid=UID \
  --default-squash-gid=GID

Dengan:

  • --default-squash-mode adalah ROOT_SQUASH.
  • --default-squash-uid dan --default-squash-gid menentukan ID default yang akan digunakan untuk mengonversi pengguna root.

Untuk mengetahui daftar lengkap dan deskripsi kolom yang tersedia saat membuat instance, lihat referensi gcloud lustre instances create.

REST

Untuk membuat instance menggunakan REST API, kirim permintaan ke endpoint berikut dan sertakan objek accessRulesOptions:

POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/instances?instanceId=INSTANCE_NAME
Authorization: Bearer AUTH_TOKEN
{
  "filesystem": "FS_NAME",
  "perUnitStorageThroughput": "PER_UNIT_STORAGE_THROUGHPUT",
  "capacityGib": "CAPACITY_GIB",
  "network": "NETWORK",
  "accessRulesOptions": {
    "defaultSquashMode": "SQUASH_MODE",
    "defaultSquashUid": UID,
    "defaultSquashGid": GID
  }
}

Dengan:

  • defaultSquashMode adalah ROOT_SQUASH.
  • defaultSquashUid dan defaultSquashGid adalah nilai ID pengguna dan grup yang akan digunakan untuk mengonversi pengguna root.

Untuk mengetahui detail tentang cara membuat instance menggunakan REST API, lihat referensi API projects.locations.instances.create.

Google Cloud Konsol

Root squash tidak dapat dikonfigurasi menggunakan konsol. Google Cloud

Mengupdate instance

Untuk mengupdate instance yang ada agar menggunakan root squash default:

gcloud

Gunakan flag --default-squash-mode, --default-squash-uid, dan --default-squash-gid untuk menetapkan nilai default:

gcloud lustre instances update INSTANCE_NAME \
  --project=PROJECT_ID \
  --location=LOCATION \
  --default-squash-mode=ROOT_SQUASH \
  --default-squash-uid=UID \
  --default-squash-gid=GID

Dengan:

  • --default-squash-mode adalah ROOT_SQUASH.
  • --default-squash-uid dan --default-squash-gid menentukan ID default yang akan digunakan untuk mengonversi pengguna root.

REST

Untuk mengupdate instance menggunakan REST API, kirim permintaan PATCH ke endpoint tertentu. Anda harus menentukan accessRulesOptions di updateMask:

PATCH https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/instances/INSTANCE_NAME?updateMask=accessRulesOptions
Authorization: Bearer AUTH_TOKEN

{
  "accessRulesOptions": {
    "defaultSquashMode": "ROOT_SQUASH",
    "defaultSquashUid": UID,
    "defaultSquashGid": GID
  }
}

Dengan:

  • defaultSquashMode adalah ROOT_SQUASH.
  • defaultSquashUid dan defaultSquashGid adalah nilai ID pengguna dan grup yang akan digunakan untuk mengonversi pengguna root.

Untuk mengetahui informasi selengkapnya tentang cara mengupdate instance, lihat Mengelola instance.

Google Cloud Konsol

Root squash tidak dapat dikonfigurasi menggunakan konsol. Google Cloud

Mengonfigurasi root squash dengan pengecualian

Untuk menerapkan root squash ke semua klien kecuali kumpulan klien tepercaya tertentu, tentukan aturan akses. Aturan ini menentukan UID dan GID default yang akan digunakan untuk mengonversi pengguna root, ditambah aturan yang mengecualikan klien tertentu dari konversi berdasarkan alamat IP atau rentang alamatnya.

Nilai yang umum digunakan untuk UID dan GID squash adalah 65534, yang diterjemahkan ke pengguna nobody. Perhatikan bahwa pengguna nobody tidak memiliki akses tulis ke sistem file. Hanya pengguna root dan anggota grup Owner yang memiliki akses baca, tulis, dan eksekusi. Pengguna lain hanya dibatasi untuk akses baca dan eksekusi.

Membuat instance

gcloud

Untuk membuat instance:

gcloud lustre instances create INSTANCE_NAME \
  --project=PROJECT_ID \
  --location=LOCATION \
  --network=NETWORK_NAME \
  --per-unit-storage-throughput=PER_UNIT_STORAGE_THROUGHPUT \
  --capacity-gib=CAPACITY \
  --filesystem=FS_NAME \
  --default-squash-mode=ROOT_SQUASH \
  --default-squash-uid=UID \
  --default-squash-gid=GID \
  --access-rules=name="ACCESS_RULE_NAME",ipAddressRanges="IP_ADDRESS_OR_CIDR_RANGE",squashMode=NO_SQUASH

Dengan:

  • --default-squash-mode adalah ROOT_SQUASH.
  • --default-squash-uid dan --default-squash-gid menentukan ID default yang akan digunakan untuk mengonversi pengguna root.
  • --access-rules menentukan pengecualian untuk root squash. Nilai berikut harus ditentukan:
    • name adalah nama untuk aturan akses ini.
    • ipAddressRanges adalah daftar yang dipisahkan koma dari satu atau beberapa alamat IP atau rentang CIDR yang tidak tumpang-tindih. Rentang ditentukan dalam format berikut: 192.168.0.0/24.
    • squashMode harus NO_SQUASH.

Untuk mengetahui daftar lengkap dan deskripsi kolom yang tersedia, lihat Membuat instance Managed Lustre.

REST

Untuk membuat instance menggunakan REST API, kirim permintaan ke endpoint berikut dan sertakan objek accessRulesOptions:

POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/instances?instanceId=INSTANCE_NAME
Authorization: Bearer AUTH_TOKEN
{
  "filesystem": "FS_NAME",
  "perUnitStorageThroughput": "PER_UNIT_STORAGE_THROUGHPUT",
  "capacityGib": "CAPACITY_GIB",
  "network": "NETWORK",
  "accessRulesOptions": {
    "accessRules": [
      {
        "name": "ACCESS_RULE_NAME",
        "ipAddressRanges": [
          "IP_ADDRESS_OR_CIDR_RANGE_1",
          "IP_ADDRESS_OR_CIDR_RANGE_2"
        ],
        "squashMode": "NO_SQUASH"
      }
    ],
    "defaultSquashMode": "SQUASH_MODE",
    "defaultSquashUid": UID,
    "defaultSquashGid": GID
  }
}

Saat menetapkan aturan akses tertentu, kolom berikut diperlukan:

  • name adalah nama yang ditentukan pengguna untuk aturan ini. Nama ini hanya boleh menggunakan karakter alfanumerik dan garis bawah (_) serta tidak boleh lebih dari 16 karakter.

  • ipAddressRanges adalah daftar satu atau beberapa alamat IP atau rentang CIDR yang tidak tumpang-tindih. Rentang ditentukan dalam format berikut: 192.168.0.0/24.

  • squashMode selalu NO_SQUASH.

  • defaultSquashMode adalah ROOT_SQUASH.

  • defaultSquashUid dan defaultSquashGid adalah nilai ID pengguna dan grup yang akan digunakan untuk mengonversi pengguna root yang tidak cocok dengan aturan akses tertentu.

Misalnya, untuk menetapkan root squash default dengan pengecualian untuk pengguna root dari rentang alamat IP tertentu dan alamat IP tertentu, objek accessRulesOptions akan terlihat seperti berikut:

{
  "accessRulesOptions": {
    "accessRules": [
      {
        "name": "dont_squash",
        "ipAddressRanges": [
          "192.100.1.10",
          "192.168.0.0/24"
        ],
        "squashMode": "NO_SQUASH"
      }
    ],
    "defaultSquashMode": "ROOT_SQUASH",
    "defaultSquashUid": 65534,
    "defaultSquashGid": 65534
  }
}

Untuk mengetahui detail tentang cara membuat instance menggunakan REST API, lihat Membuat instance Managed Lustre.

Google Cloud Konsol

Root squash tidak dapat dikonfigurasi menggunakan konsol. Google Cloud

Mengupdate instance

gcloud

Untuk mengupdate instance:

gcloud lustre instances update INSTANCE_NAME \
  --project=PROJECT_ID \
  --location=LOCATION \
  --default-squash-mode=ROOT_SQUASH \
  --default-squash-uid=UID \
  --default-squash-gid=GID \
  --access-rules=name="ACCESS_RULE_NAME",ipAddressRanges="IP_ADDRESS_OR_CIDR_RANGE",squashMode=NO_SQUASH

Dengan:

  • --default-squash-mode adalah ROOT_SQUASH.
  • --default-squash-uid dan --default-squash-gid menentukan ID default yang akan digunakan untuk mengonversi pengguna root.
  • --access-rules menentukan pengecualian untuk root squash. Nilai berikut harus ditentukan:
    • name adalah nama untuk aturan akses ini.
    • ipAddressRanges adalah daftar yang dipisahkan koma dari satu atau beberapa alamat IP atau rentang CIDR yang tidak tumpang-tindih. Rentang ditentukan dalam format berikut: 192.168.0.0/24.
    • squashMode harus NO_SQUASH.

Untuk mengetahui informasi selengkapnya tentang cara mengupdate instance, lihat Mengelola instance.

REST

Untuk mengupdate instance menggunakan REST API, kirim permintaan PATCH ke endpoint tertentu. Anda harus menentukan accessRulesOptions sebagai nilai updateMask di URL endpoint:

PATCH https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/instances/INSTANCE_NAME?updateMask=accessRulesOptions
Authorization: Bearer AUTH_TOKEN

{
  "accessRulesOptions": {
    "accessRules": [
      {
        "name": "ACCESS_RULE_NAME",
        "ipAddressRanges": [
          "IP_ADDRESS_OR_CIDR_RANGE_1",
          "IP_ADDRESS_OR_CIDR_RANGE_2"
        ],
        "squashMode": "NO_SQUASH"
      }
    ],
    "defaultSquashMode": "SQUASH_MODE",
    "defaultSquashUid": UID,
    "defaultSquashGid": GID
  }
}

Untuk mengetahui informasi selengkapnya tentang cara mengupdate instance, lihat Mengelola instance.

Google Cloud Konsol

Root squash tidak dapat dikonfigurasi menggunakan konsol. Google Cloud

Menghapus root squash dari instance

Untuk menghapus semua setelan root squash dari instance, update instance untuk menghapus aturan akses dan menetapkan mode default ke NO_SQUASH.

gcloud

gcloud lustre instances update INSTANCE_NAME \
  --project=PROJECT_ID \
  --location=LOCATION \
  --default-squash-mode=NO_SQUASH \
  --clear-access-rules \
  --default-squash-uid=0 --default-squash-gid=0

REST

PATCH https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/instances/INSTANCE_NAME?updateMask=accessRulesOptions
Authorization: Bearer AUTH_TOKEN

{
  "accessRulesOptions": {
    "defaultSquashMode": "NO_SQUASH"
  }
}

Google Cloud Konsol

Root squash tidak dapat dikonfigurasi menggunakan konsol. Google Cloud