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 "dibatasi" 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 di instance Managed Lustre.

Batasan dan rekomendasi keamanan

Membatasi akses root di VM klien

Mekanisme terbaik untuk membatasi akses root adalah dengan melarang pengguna menjadi root sejak awal. Memberi pengguna hak istimewa root di VM dapat membuat Anda terpapar risiko persistensi: pengguna dapat menyalahgunakan hak istimewa ini untuk membuat akun pengguna baru atau menginstal pintu belakang untuk mempertahankan akses persisten ke VM. Lihat Praktik terbaik untuk mengontrol akses login SSH untuk mengetahui petunjuk tentang 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 dilakukan dengan upaya terbaik dan fitur ini tidak dimaksudkan untuk menjadi 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 mengakali 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 menjadi pengguna nobody.

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

Buat instance

Untuk membuat instance dengan squash root default:

gcloud

Gunakan tanda --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 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 dikonversi menjadi pengguna root.

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

Konsol Google Cloud

Root squash tidak dapat dikonfigurasi menggunakan konsol Google Cloud .

Mengupdate instance

Untuk memperbarui instance yang ada agar menggunakan root squash default:

gcloud

Gunakan tanda --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 untuk menggabungkan pengguna root.

REST

Untuk mengupdate instance menggunakan REST API, kirim permintaan PATCH ke endpoint tertentunya. 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 dikonversi menjadi pengguna root.

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

Konsol Google Cloud

Root squash tidak dapat dikonfigurasi menggunakan konsol Google Cloud .

Mengonfigurasi root squash dengan pengecualian

Untuk menerapkan root squash ke semua klien kecuali serangkaian klien tepercaya tertentu, tentukan aturan akses. Aturan ini menentukan UID dan GID default untuk menggabungkan pengguna root, serta aturan yang mengecualikan klien tertentu agar tidak digabungkan 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 memiliki 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 untuk menggabungkan 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 berupa 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 terdiri dari 16 karakter atau kurang.

  • 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 menyetel root squash default dengan pengecualian bagi 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 Lustre Terkelola.

Konsol Google Cloud

Root squash tidak dapat dikonfigurasi menggunakan konsol Google Cloud .

Memperbarui instance

gcloud

Untuk memperbarui 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 untuk menggabungkan 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 berupa 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 tertentunya. 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.

Konsol Google Cloud

Root squash tidak dapat dikonfigurasi menggunakan konsol Google Cloud .

Menghapus root squash dari instance

Untuk menghapus semua setelan root squash dari instance, perbarui 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"
  }
}

Konsol Google Cloud

Root squash tidak dapat dikonfigurasi menggunakan konsol Google Cloud .