Dokumen ini menjelaskan cara mengonfigurasi tugas Batch untuk memblokir akses eksternal bagi semua VM-nya atau container tertentu.
Memblokir akses eksternal untuk tugas guna memenuhi persyaratan jaringan atau meningkatkan keamanan. Anda harus memblokir akses eksternal untuk VM tugas menggunakan VM tanpa alamat IP eksternal jika salah satu hal berikut berlaku:
- Project Anda dibatasi oleh batasan kebijakan organisasi
compute.vmExternalIpAccess
. Jaringan yang Anda tentukan untuk tugas tersebut menggunakan Akses Google Pribadi untuk mengonfigurasi konektivitas pribadi ke Google API dan layanan Google. Akses Google Pribadi tidak berpengaruh pada VM yang memiliki alamat IP eksternal.
Jika jaringan yang Anda tentukan untuk tugas menggunakan Akses Google Pribadi dengan Kontrol Layanan VPC untuk Batch, lihat Menggunakan Kontrol dan Batch Layanan VPC.
Atau, jika tidak ingin memblokir semua akses eksternal langsung untuk suatu tugas, Anda dapat memblokir akses eksternal untuk container apa pun yang dijalankan tugas.
Untuk mengetahui informasi selengkapnya tentang konsep jaringan dan waktu untuk mengonfigurasi jaringan, lihat Ringkasan jaringan batch.
Sebelum memulai
- Jika belum pernah menggunakan Batch, baca Mulai menggunakan Batch dan aktifkan Batch dengan menyelesaikan prasyarat untuk project dan pengguna.
-
Untuk mendapatkan izin yang diperlukan untuk membuat tugas yang memblokir akses eksternal, minta administrator untuk memberi Anda peran IAM berikut:
-
Batch Job Editor (
roles/batch.jobsEditor
) pada project -
Service Account User (
roles/iam.serviceAccountUser
) pada akun layanan tugas, yang secara default adalah akun layanan Compute Engine default -
Untuk mengidentifikasi jaringan dan subnet untuk tugas:
Compute Network Viewer (
roles/compute.networkViewer
) pada project
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
-
Batch Job Editor (
-
Jika Anda memblokir akses eksternal untuk VM tugas, Anda harus mengidentifikasi jaringan yang ingin digunakan untuk tugas tersebut. Jaringan yang Anda tentukan untuk tugas yang memblokir akses eksternal untuk VM-nya harus memenuhi persyaratan berikut:
- Jaringan tersebut adalah jaringan Virtual Private Cloud (VPC) yang berada dalam project yang sama dengan tugas atau merupakan Jaringan VPC bersama yang dihosting oleh atau dibagikan dengan project untuk tugas tersebut.
- Jaringan ini mencakup subnetwork (subnet) di lokasi tempat Anda ingin menjalankan tugas.
- Jaringan memungkinkan akses apa pun yang diperlukan untuk pekerjaan Anda. Jika Anda memblokir akses eksternal untuk VM tugas, jaringan harus menggunakan Cloud NAT atau Akses Google Pribadi agar dapat mengizinkan akses ke domain untuk API dan layanan yang digunakan tugas Anda. Misalnya, semua tugas menggunakan Batch dan Compute Engine API serta sangat sering menggunakan Cloud Logging API.
Membuat tugas yang memblokir akses eksternal untuk semua VM
Blokir akses eksternal untuk VM tugas saat Anda membuat tugas. Saat memblokir akses eksternal untuk semua VM tempat tugas dijalankan, Anda juga harus menentukan jaringan dan subnet yang memungkinkan tugas mengakses API yang diperlukan.
Jika ingin menggunakan template instance VM saat membuat tugas ini, Anda harus menentukan jaringan dan menonaktifkan alamat IP eksternal di template instance VM. Jika tidak, gunakan langkah-langkah berikut untuk memblokir akses eksternal untuk VM tugas menggunakan gcloud CLI atau Batch API.
gcloud
Untuk membuat tugas yang memblokir akses eksternal menggunakan gcloud CLI, pilih salah satu opsi berikut:
- Menggunakan flag gcloud untuk memblokir akses eksternal bagi semua VM
- Menggunakan kolom JSON untuk memblokir akses eksternal bagi semua VM
Menggunakan flag gcloud untuk memblokir akses eksternal bagi semua VM
Agar dapat membuat tugas dan menggunakan flag gcloud untuk memblokir akses eksternal ke tugas, selesaikan langkah-langkah berikut:
Buat file JSON yang menentukan detail konfigurasi tugas Anda.
Misalnya, untuk membuat tugas skrip dasar, buat file JSON dengan konten berikut.
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." } } ] }, "taskCount": 3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Buat tugas menggunakan perintah
gcloud batch jobs submit
. Untuk memblokir akses eksternal bagi semua VM, sertakan flag--no-external-ip-address
,--network
, dan--subnetwork
.gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE \ --no-external-ip-address \ --network projects/HOST_PROJECT_ID/global/networks/NETWORK \ --subnetwork projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
Ganti kode berikut:
JOB_NAME
: nama untuk pekerjaan ini.LOCATION
: lokasi untuk pekerjaan ini.JSON_CONFIGURATION_FILE
: jalur untuk file JSON dengan detail konfigurasi tugas.HOST_PROJECT_ID
: project ID project untuk jaringan yang Anda tentukan:- Jika Anda menggunakan jaringan VPC Bersama, tentukan project host.
- Jika tidak, tentukan project saat ini.
NETWORK
: nama jaringan VPC dalam project saat ini atau jaringan VPC Bersama yang dihosting oleh atau dibagikan dengan project saat ini.REGION
: region tempat subnet dan VM untuk tugas berada:- Jika Anda menyertakan kolom
allowedLocations
untuk menentukan lokasi yang diizinkan bagi VM untuk tugas, Anda harus menentukan region yang sama di sini. - Jika tidak, region harus sama dengan
lokasi yang Anda pilih untuk tugas
(
LOCATION
).
- Jika Anda menyertakan kolom
SUBNET
: nama subnet yang merupakan bagian dari jaringan VPC dan terletak di region yang sama dengan VM untuk tugas tersebut.
Gunakan kolom JSON untuk memblokir akses eksternal bagi semua VM
Untuk membuat tugas dan menggunakan kolom di file konfigurasi JSON guna memblokir akses eksternal bagi semua VM, selesaikan langkah-langkah berikut:
Buat file JSON yang menentukan detail konfigurasi tugas Anda. Untuk memblokir akses eksternal bagi semua VM, lakukan tindakan berikut:
Tetapkan kolom
noExternalIpAddress
ketrue
.Tentukan jaringan untuk tugas di kolom
network
dansubnetwork
.
Misalnya, untuk membuat tugas skrip dasar yang memblokir akses eksternal untuk semua VM, buat file JSON dengan konten berikut.
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." } } ] }, "taskCount": 3 } ], "allocationPolicy": { "network": { "networkInterfaces": [ { "network": "projects/HOST_PROJECT_ID/global/networks/NETWORK", "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET", "noExternalIpAddress": true } ] } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Ganti kode berikut:
HOST_PROJECT_ID
: project ID project untuk jaringan yang Anda tentukan:- Jika Anda menggunakan jaringan VPC Bersama, tentukan project host.
- Jika tidak, tentukan project saat ini.
NETWORK
: nama jaringan yang menyediakan akses yang diperlukan untuk tugas ini. Jaringan harus berupa jaringan VPC dalam project saat ini atau jaringan VPC Bersama yang dihosting oleh atau digunakan bersama dengan project saat ini.REGION
: region tempat subnet dan VM untuk tugas berada:- Jika Anda menyertakan kolom
allowedLocations
untuk menentukan lokasi yang diizinkan bagi VM untuk tugas, Anda harus menentukan region yang sama di sini. - Jika tidak, region harus sama dengan
lokasi yang Anda pilih untuk tugas
(
LOCATION
).
- Jika Anda menyertakan kolom
SUBNET
: nama subnet yang merupakan bagian dari jaringan VPC dan terletak di region yang sama dengan VM untuk tugas tersebut.
Buat tugas menggunakan perintah
gcloud batch jobs submit
.gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Ganti kode berikut:
JOB_NAME
: nama yang Anda inginkan untuk pekerjaan ini.LOCATION
: lokasi yang Anda inginkan untuk pekerjaan ini.JSON_CONFIGURATION_FILE
: jalur untuk file JSON dengan detail konfigurasi tugas.
API
Untuk membuat tugas menggunakan Batch API, gunakan
metode jobs.create
dan tentukan detail konfigurasi tugas Anda.
Untuk memblokir akses eksternal bagi semua VM, lakukan tindakan berikut:
Tetapkan kolom
noExternalIpAddress
ketrue
.Tentukan jaringan untuk tugas di kolom
network
dansubnetwork
.
Misalnya, untuk membuat tugas skrip dasar yang memblokir akses eksternal untuk semua VM, buat permintaan POST
berikut:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
}
}
]
},
"taskCount": 3
}
],
"allocationPolicy": {
"network": {
"networkInterfaces": [
{
"network": "projects/HOST_PROJECT_ID/global/networks/NETWORK",
"subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET",
"noExternalIpAddress": true
}
]
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Ganti kode berikut:
PROJECT_ID
: project ID project Anda.LOCATION
: lokasi yang Anda inginkan untuk pekerjaan ini.JOB_NAME
: nama yang Anda inginkan untuk pekerjaan ini.HOST_PROJECT_ID
: project ID project untuk jaringan yang Anda tentukan:- Jika Anda menggunakan jaringan VPC Bersama, tentukan project host.
- Jika tidak, tentukan project saat ini (
PROJECT_ID
).
NETWORK
: nama jaringan yang menyediakan akses yang diperlukan untuk tugas ini. Jaringan harus berupa jaringan VPC dalam project saat ini atau jaringan VPC Bersama yang dihosting oleh atau digunakan bersama dengan project saat ini.REGION
: region tempat subnet dan VM untuk tugas berada:- Jika Anda menyertakan kolom
allowedLocations
untuk menentukan lokasi yang diizinkan bagi VM untuk tugas, Anda harus menentukan region yang sama di sini. - Jika tidak, region harus sama dengan
lokasi yang Anda pilih untuk tugas
(
LOCATION
).
- Jika Anda menyertakan kolom
SUBNET
: nama subnet yang merupakan bagian dari jaringan VPC dan terletak di region yang sama dengan VM untuk tugas tersebut.
Membuat tugas yang memblokir akses eksternal untuk satu atau beberapa penampung
Memblokir akses eksternal untuk salah satu penampung tugas saat Anda membuat tugas.
Anda dapat memblokir akses eksternal ke container tugas menggunakan gcloud CLI atau Batch API.
gcloud
Untuk membuat tugas yang memblokir akses eksternal ke satu atau beberapa container menggunakan gcloud CLI, selesaikan langkah-langkah berikut:
Buat file JSON yang menentukan detail konfigurasi tugas Anda. Untuk setiap penampung dalam tugas yang ingin Anda batasi, tetapkan kolom
blockExternalNetwork
ketrue
.Misalnya, untuk membuat tugas container dasar yang memblokir akses eksternal ke penampung, buat file JSON dengan konten berikut.
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." ], "blockExternalNetwork": true } } ] }, "taskCount": 4, "parallelism": 2 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Buat tugas menggunakan perintah
gcloud batch jobs submit
.gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Ganti kode berikut:
JOB_NAME
: nama yang Anda inginkan untuk pekerjaan ini.LOCATION
: lokasi yang Anda inginkan untuk pekerjaan ini.JSON_CONFIGURATION_FILE
: jalur untuk file JSON dengan detail konfigurasi tugas.
API
Untuk membuat tugas menggunakan Batch API, gunakan
metode jobs.create
dan tentukan detail konfigurasi tugas Anda.
Untuk setiap penampung dalam tugas yang ingin Anda batasi, tetapkan
kolom blockExternalNetwork
ke true
.
Misalnya, untuk membuat tugas container dasar yang memblokir akses
eksternal untuk container, buat permintaan POST
berikut:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google-containers/busybox",
"entrypoint": "/bin/sh",
"commands": [
"-c",
"echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
],
"blockExternalNetwork": true
}
}
]
},
"taskCount": 4,
"parallelism": 2
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Ganti kode berikut:
PROJECT_ID
: project ID project Anda.LOCATION
: lokasi yang Anda inginkan untuk pekerjaan ini.JOB_NAME
: nama yang Anda inginkan untuk pekerjaan ini.
Langkah selanjutnya
- Jika Anda mengalami masalah saat membuat atau menjalankan tugas, lihat Pemecahan masalah.
- Pelajari jaringan lebih lanjut.
- Pelajari lebih lanjut cara membuat tugas.
- Pelajari cara melihat tugas dan tugas.