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-modeadalahROOT_SQUASH.--default-squash-uiddan--default-squash-gidmenentukan 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:
defaultSquashModeadalahROOT_SQUASH.defaultSquashUiddandefaultSquashGidadalah 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-modeadalahROOT_SQUASH.--default-squash-uiddan--default-squash-gidmenentukan 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:
defaultSquashModeadalahROOT_SQUASH.defaultSquashUiddandefaultSquashGidadalah 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-modeadalahROOT_SQUASH.--default-squash-uiddan--default-squash-gidmenentukan ID default yang akan digunakan untuk mengonversi pengguna root.--access-rulesmenentukan pengecualian untuk root squash. Nilai berikut harus ditentukan:nameadalah nama untuk aturan akses ini.ipAddressRangesadalah 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.squashModeharusNO_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:
nameadalah nama yang ditentukan pengguna untuk aturan ini. Nama ini hanya boleh menggunakan karakter alfanumerik dan garis bawah (_) serta tidak boleh lebih dari 16 karakter.ipAddressRangesadalah daftar satu atau beberapa alamat IP atau rentang CIDR yang tidak tumpang-tindih. Rentang ditentukan dalam format berikut:192.168.0.0/24.squashModeselaluNO_SQUASH.defaultSquashModeadalahROOT_SQUASH.defaultSquashUiddandefaultSquashGidadalah 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-modeadalahROOT_SQUASH.--default-squash-uiddan--default-squash-gidmenentukan ID default yang akan digunakan untuk mengonversi pengguna root.--access-rulesmenentukan pengecualian untuk root squash. Nilai berikut harus ditentukan:nameadalah nama untuk aturan akses ini.ipAddressRangesadalah 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.squashModeharusNO_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