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-modeadalahROOT_SQUASH.--default-squash-uiddan--default-squash-gidmenentukan 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:
defaultSquashModeadalahROOT_SQUASH.defaultSquashUiddandefaultSquashGidadalah 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-modeadalahROOT_SQUASH.--default-squash-uiddan--default-squash-gidmenentukan 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:
defaultSquashModeadalahROOT_SQUASH.defaultSquashUiddandefaultSquashGidadalah 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-modeadalahROOT_SQUASH.--default-squash-uiddan--default-squash-gidmenentukan ID default untuk menggabungkan 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.squashModeharus berupaNO_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 terdiri dari 16 karakter atau kurang.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 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-modeadalahROOT_SQUASH.--default-squash-uiddan--default-squash-gidmenentukan ID default untuk menggabungkan 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.squashModeharus berupaNO_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 .