Mengintegrasikan AWS S3 dengan Google SecOps
Dokumen ini menjelaskan cara mengintegrasikan AWS S3 dengan Google Security Operations.
Kasus penggunaan
- Mengelola bucket
- Mendownload file dari bucket
- Mengupload file ke bucket
Sebelum memulai
Sebelum mengonfigurasi integrasi AWS S3 di Google SecOps, pastikan lingkungan jaringan dan kredensial AWS Anda memenuhi semua prasyarat operasional.
Untuk menyiapkan lingkungan Anda untuk integrasi, pastikan Anda menyelesaikan hal berikut:
Verifikasi line-of-sight jaringan antara endpoint layanan regional Google SecOps dan AWS S3.
Dapatkan kredensial API terprogram AWS (ID Kunci Akses dan Kunci Akses Rahasia) dengan izin IAM yang sesuai.
Konfigurasi dan uji instance integrasi dalam Google SecOps.
Persyaratan jaringan
Google SecOps berkomunikasi langsung dengan layanan AWS S3 menggunakan
HTTPS REST API dan AWS Python SDK (boto3).
Pastikan lingkungan jaringan Anda memenuhi aturan konektivitas berikut:
Akses HTTPS keluar: Aktifkan komunikasi HTTPS keluar dari instance Google SecOps atau Agen Jarak Jauh ke endpoint regional AWS S3 (
s3.<region>.amazonaws.comataus3.amazonaws.com) melalui port443/TCP.Untuk mengetahui informasi selengkapnya, lihat AWS Service Endpoints dalam dokumentasi AWS.
Konfigurasi proxy: Jika organisasi Anda merutekan traffic keluar melalui proxy HTTP/HTTPS, konfigurasi variabel proxy lingkungan standar (
HTTP_PROXY,HTTPS_PROXY,NO_PROXY) di server Google SecOps atau host Agen Jarak Jauh.
Autentikasi dan kredensial
Integrasi AWS S3 memerlukan kredensial API terprogram untuk mengautentikasi permintaan menggunakan AWS Signature Version 4.
Pastikan lingkungan AWS Anda memenuhi persyaratan autentikasi berikut:
Kredensial terprogram: Dapatkan ID Kunci Akses AWS dan Kunci Rahasia AWS yang valid yang terkait dengan pengguna atau peran IAM AWS.
Untuk mengetahui informasi tentang cara membuat identitas IAM dan membuat kredensial, lihat Mengelola kunci akses untuk pengguna IAM dan Identitas IAM dalam dokumentasi AWS.
Hak istimewa terendah: Batasi izin hanya untuk tindakan dan resource bucket yang diperlukan untuk alur kerja otomatis Anda, dan ganti kredensial secara berkala.
Untuk mengetahui detail rekomendasi keamanan, lihat Praktik terbaik keamanan di IAM dalam dokumentasi AWS.
Mengonfigurasi izin tindakan
Memberi identitas AWS IAM yang melakukan autentikasi izin khusus yang diperlukan untuk tindakan yang dijalankan playbook Google SecOps Anda.
Lihat izin minimal untuk tindakan AWS S3 dalam tabel berikut:
| Nama Tindakan | Izin IAM AWS yang Diperlukan
(ActionName:Permission) |
Izin Prasyarat | Deskripsi / Cakupan Resource |
|---|---|---|---|
| Download File Dari Bucket | s3:GetObject |
s3:ListAllMyBuckets |
Mendownload objek dari bucket S3. Resource:
arn:aws:s3:::<bucket-name>/*. |
| Mendapatkan Kebijakan Bucket | s3:GetBucketPolicy |
s3:ListAllMyBuckets |
Mengambil kebijakan akses bucket. Resource:
arn:aws:s3:::<bucket-name>. |
| List Bucket Objects | s3:ListBucket |
s3:ListAllMyBuckets |
Mencantumkan objek dalam bucket S3. Resource:
arn:aws:s3:::<bucket-name>. |
| List Buckets | s3:ListAllMyBuckets |
— | Mencantumkan semua bucket S3 yang dimiliki oleh akun. Sumber: *. |
| Ping | s3:ListAllMyBuckets |
— | Memvalidasi konektivitas integrasi. Sumber: *. |
| Menetapkan Kebijakan Bucket | s3:PutBucketPolicy |
s3:ListAllMyBuckets |
Menetapkan atau mengubah kebijakan bucket S3. Resource:
arn:aws:s3:::<bucket-name>. |
| Upload File Ke Bucket | s3:PutObject |
s3:ListAllMyBuckets |
Mengupload objek ke dalam bucket S3. Resource:
arn:aws:s3:::<bucket-name>/*. |
Referensi cepat (ActionName:Permission)
Gunakan referensi cepat berikut untuk meninjau izin yang diperlukan untuk setiap tindakan:
Ping: s3:ListAllMyBuckets
Download File From Bucket: s3:GetObject, s3:ListAllMyBuckets
Get Bucket Policy: s3:GetBucketPolicy, s3:ListAllMyBuckets
List Bucket Objects: s3:ListBucket, s3:ListAllMyBuckets
List Buckets: s3:ListAllMyBuckets
Set Bucket Policy: s3:PutBucketPolicy, s3:ListAllMyBuckets
Upload File To Bucket: s3:PutObject, s3:ListAllMyBuckets
Contoh kebijakan IAM (hak istimewa terendah)
Contoh kebijakan berikut menunjukkan izin yang diperlukan untuk menjalankan semua tindakan AWS S3 di Google SecOps.
Untuk mengetahui petunjuk tentang cara membuat dan melampirkan kebijakan IAM, lihat Membuat kebijakan IAM dalam dokumentasi AWS.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SecOpsS3Discovery",
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": "*"
},
{
"Sid": "SecOpsS3BucketOperations",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketPolicy",
"s3:PutBucketPolicy"
],
"Resource": "arn:aws:s3:::*"
},
{
"Sid": "SecOpsS3ObjectOperations",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::*/*"
}
]
}
Parameter integrasi
Gunakan parameter berikut untuk mengonfigurasi integrasi:
| Nama Tampilan Parameter | Jenis | Nilai Default | Wajib | Deskripsi |
|---|---|---|---|---|
| AWS Access Key ID | String | T/A | Ya | ID Kunci Akses AWS yang akan digunakan dalam integrasi. |
| AWS Secret Key | Sandi | T/A | Ya | Kunci Rahasia AWS yang akan digunakan dalam integrasi. |
| Region Default AWS | String | T/A | Ya | Region default AWS yang akan digunakan dalam integrasi, misalnya us-west-2. |
| Menjalankan dari Jarak Jauh | Kotak centang | Tidak dicentang | Tidak | Centang kolom untuk menjalankan integrasi yang dikonfigurasi dari jarak jauh. Setelah dicentang, opsi akan muncul untuk memilih pengguna jarak jauh (agen). |
Untuk mengetahui petunjuk tentang cara mengonfigurasi integrasi di Google SecOps, lihat Mengonfigurasi integrasi.
Anda dapat melakukan perubahan di tahap selanjutnya, jika diperlukan. Setelah mengonfigurasi instance integrasi, Anda dapat menggunakannya dalam playbook. Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi dan mendukung beberapa instance, lihat Mendukung beberapa instance.
Tindakan
Untuk mengetahui informasi selengkapnya tentang tindakan, lihat Merespons tindakan tertunda dari Ruang Kerja Anda dan Melakukan tindakan manual.
Download File Dari Bucket
Mendownload file dari bucket di AWS S3.
Parameter
| Nama Tampilan Parameter | Jenis | Nilai Default | Wajib | Deskripsi |
|---|---|---|---|---|
| Jalur File Bucket | String | s3://{bucket_name}/{file_name} | Ya | Tentukan jalur ke file dalam bucket. Contoh: s3://siemplify/syslog/log.txt |
| Jalur Download | String | T/A | Ya | Tentukan jalur tempat file akan didownload. |
Terus Berjalan
Tindakan ini tidak dijalankan pada entity.
Hasil Tindakan
Hasil Skrip
| Nama Hasil Skrip | Opsi Nilai | Contoh |
|---|---|---|
| is_success | Benar/Salah | is_success:False |
Hasil JSON
{
"bucket_file_path": "s3://testsiemplify/test/123.txt"
"download_path": "/usr/bin/share/download.txt"
}
Repositori Kasus
| Jenis Hasil | Nilai / Deskripsi | Jenis |
|---|---|---|
| Pesan output* | Tindakan tidak boleh gagal atau menghentikan eksekusi playbook: Jika kode status == 200 (is_success = true) "Successfully downloaded '{0}' from AWS S3".format(bucket_file_path) Jika kode status lainnya (is_success=false): "Tindakan tidak dapat mendownload '{0}' dari AWS S3. Alasan: file dengan jalur download tersebut sudah ada." Tindakan akan gagal dan menghentikan eksekusi playbook: Jika error fatal, seperti kredensial salah, tidak ada koneksi ke server, error SDK, atau error lainnya: "Error executing action "Download File From Bucket". Reason: {0}''.format(error.Stacktrace) |
Umum |
Mendapatkan Kebijakan Bucket
Mengambil informasi tentang kebijakan bucket dari AWS S3.
Parameter
| Nama Tampilan Parameter | Jenis | Nilai Default | Wajib | Deskripsi |
|---|---|---|---|---|
| Nama Bucket | String | T/A | Ya | Tentukan nama bucket yang akan digunakan untuk mengambil informasi kebijakan. |
Jalan Terus
Tindakan ini tidak dijalankan pada entity.
Hasil Tindakan
Hasil Skrip
| Nama Hasil Skrip | Opsi Nilai | Contoh |
|---|---|---|
| is_success | Benar/Salah | is_success:False |
Hasil JSON
{
"Policy": {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::testsiemplify/*"
}
]
}
Repositori Kasus
| Jenis Hasil | Nilai / Deskripsi | Jenis |
|---|---|---|
| Pesan output* | Tindakan tidak boleh gagal atau menghentikan eksekusi playbook: Jika kode status == 200 (is_success = true) "Successfully retrieved information about the policy of the "{0}" bucket in AWS S3".format(bucket_name) Jika kode status lainnya (is_success=false): "Action wasn't able to return information about the policy of the '{0}' bucket in AWS S3".format(bucket_name) Tindakan akan gagal dan menghentikan eksekusi playbook: Jika error fatal, seperti kredensial salah, tidak ada koneksi ke server, atau error lainnya: "Error executing action "Get Bucket Policy". Reason: {0}''.format(error.Stacktrace) |
Umum |
Mencantumkan Objek Bucket
Memungkinkan pengguna menonaktifkan akun pengguna. Isi permintaan berisi pengguna yang akan dinonaktifkan. Properti yang diaktifkan akun harus disetel ke false.
Parameter
| Nama Tampilan Parameter | Jenis | Nilai Default | Wajib | Deskripsi |
|---|---|---|---|---|
| Nama Bucket | String | T/A | Ya | Tentukan nama bucket tempat mengambil objek. |
| Jumlah Maksimum Objek yang Akan Ditampilkan | Bilangan bulat | T/A | Tidak | Tentukan jumlah objek yang akan ditampilkan. |
Terus Berjalan
Tindakan ini tidak dijalankan pada entity.
Hasil Tindakan
Hasil Skrip
| Nama Hasil Skrip | Opsi Nilai | Contoh |
|---|---|---|
| is_success | Benar/Salah | is_success:False |
Hasil JSON
"Contents": [
{
"Key": "text.txt",
"LastModified": %Y-%m-%dT%H:%M:%S,
"ETag": "d41d8cd98f00b204e9800998ecf8427e",
"Size": 0,
"StorageClass": "STANDARD",
"Owner": {
"DisplayName": "lab_aws",
"ID": "935dc3fed0e1d2c5b12242cf9927370824f2438681a2d3c0523f254dbde41aba"
}
},
{
"Key": "text_1.txt",
"LastModified": %Y-%m-%dT%H:%M:%S,
"ETag": "d41d8cd98f00b204e9800998ecf8427e",
"Size": 0,
"StorageClass": "STANDARD",
"Owner": {
"DisplayName": "lab_aws",
"ID": "935dc3fed0e1d2c5b12242cf9927370824f2438681a2d3c0523f254dbde41aba"
}
}
]
Repositori Kasus
| Jenis Hasil | Nilai / Deskripsi | Jenis |
|---|---|---|
| Pesan output* | Tindakan tidak boleh gagal atau menghentikan eksekusi playbook: Jika kode status == 200 (is_success = true) "Berhasil menampilkan objek bucket "{0}" di AWS S3".format(bucket_name) Jika kode status lainnya (is_success=false): "Action wasn't able to return objects of the '{0}' bucket in AWS S3".format(bucket_name) Tindakan akan gagal dan menghentikan eksekusi playbook: Jika error fatal, seperti kredensial salah, tidak ada koneksi ke server, atau error lainnya: "Error executing action "List Bucket Objects". Reason: {0}''.format(error.Stacktrace) |
Umum |
| Tabel Repositori Kasus | Nama Tabel: Objek Bucket '{0}' Kolom:
|
Umum |
Mencantumkan Bucket
Mengambil daftar bucket dari AWS S3.
Terus Berjalan
Tindakan ini tidak dijalankan pada entity.
Hasil Tindakan
Hasil Skrip
| Nama Hasil Skrip | Opsi Nilai | Contoh |
|---|---|---|
| is_success | Benar/Salah | is_success:False |
Hasil JSON
{
"Buckets": [
{
"CreationDate": %Y-%m-%dT%H:%M:%S,
"Name": "testsiemplify"
}
],
"Owner": {
"DisplayName": "lab_aws",
"ID": "935dc3fed0e1d2c5b12242cf9927370824f2438681a2d3c0523f254dbde41aba"
},
Repositori Kasus
| Jenis Hasil | Nilai / Deskripsi | Jenis |
|---|---|---|
| Pesan output* | Tindakan tidak boleh gagal atau menghentikan eksekusi playbook: Jika kode status == 200 (is_success = true) "Successfully listed available buckets in AWS S3". Jika kode status lainnya (is_success=false): "Action wasn't able to list available buckets in AWS S3. Tindakan akan gagal dan menghentikan eksekusi playbook: Jika error fatal, seperti kredensial salah, tidak ada koneksi ke server, atau error lainnya: "Error executing action "List Buckets". Reason: {0}''.format(error.Stacktrace) |
Umum |
Ping
Uji konektivitas ke AWS S3 dengan parameter yang diberikan di halaman konfigurasi integrasi di tab Google Security Operations Marketplace.
Kasus penggunaan
Uji Konektivitas.
Terus Berjalan
Tindakan ini tidak dijalankan pada entity.
Hasil Tindakan
Hasil Skrip
| Nama Hasil Skrip | Opsi Nilai | Contoh |
|---|---|---|
| is_success | Benar/Salah | is_success:False |
Repositori Kasus
| Jenis Hasil | Nilai / Deskripsi | Jenis |
|---|---|---|
| Pesan output* | Tindakan tidak boleh gagal atau menghentikan eksekusi playbook: Jika berhasil: "Successfully connected to the AWS S3 server with the provided connection parameters!" (Berhasil terhubung ke server AWS S3 dengan parameter koneksi yang diberikan.) Tindakan akan gagal dan menghentikan eksekusi playbook: Jika tidak berhasil: "Gagal terhubung ke server AWS S3! Error is {0}".format(exception.stacktrace) |
Umum |
Menetapkan Kebijakan Bucket
Tetapkan kebijakan di bucket dari AWS S3.
Parameter
| Nama Tampilan Parameter | Jenis | Nilai Default | Wajib | Deskripsi |
|---|---|---|---|---|
| Nama Bucket | String | T/A | Ya | Tentukan nama bucket yang ingin Anda perbarui kebijakannya. |
| Objek JSON Kebijakan | String | T/A | Ya | Tentukan objek JSON kebijakan yang ingin Anda tetapkan untuk bucket. Contohnya dapat ditemukan di sini: https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html. |
Jalan Terus
Tindakan ini tidak dijalankan pada entity.
Hasil Tindakan
Hasil Skrip
| Nama Hasil Skrip | Opsi Nilai | Contoh |
|---|---|---|
| is_success | Benar/Salah | is_success:False |
Hasil JSON
bucket_policy = {
'Version': '2012-10-17',
'Statement': [{
'Sid': 'AddPerm',
'Effect': 'Allow',
'Principal': '*',
'Action': ['s3:GetObject'],
'Resource': f'arn:aws:s3:::{bucket_name}/*'
}]
}
Repositori Kasus
| Jenis Hasil | Nilai / Deskripsi | Jenis |
|---|---|---|
| Pesan output* | Tindakan tidak boleh gagal atau menghentikan eksekusi playbook: If status code == 204 (is_success = true) "Successfully updated policy of the "{0}" bucket in AWS S3".format(bucket_name) Jika kode status lainnya (is_success=false): "Action wasn't able to update the policy of the '{0}' bucket in AWS S3".format(bucket_name) Tindakan akan gagal dan menghentikan eksekusi playbook: Jika error fatal, seperti kredensial salah, tidak ada koneksi ke server, atau error lainnya: "Error executing action "Set Bucket Policy". Reason: {0}''.format(error.Stacktrace) |
Mengupload File Ke Bucket
Mengupload file ke bucket di AWS S3.
Parameter
| Nama Tampilan Parameter | Jenis | Nilai Default | Wajib | Deskripsi |
|---|---|---|---|---|
| Jalur File | String | T/A | Ya | Tentukan jalur ke file yang perlu diupload. |
| Jalur Upload Bucket | String | s3://{bucket_name}/{file_name} | Ya | Tentukan jalur di bucket tempat jalur harus diupload. Contoh: s3://siemplify/syslog/log.txt |
Jalan Terus
Tindakan ini tidak dijalankan pada entity.
Hasil Tindakan
Hasil Skrip
| Nama Hasil Skrip | Opsi Nilai | Contoh |
|---|---|---|
| is_success | Benar/Salah | is_success:False |
Hasil JSON
{
"bucket_upload_path": "s3://testsiemplify/test/123.txt"
"file_path": "/usr/bin/share/download.txt"
}
Repositori Kasus
| Jenis Hasil | Nilai / Deskripsi | Jenis |
|---|---|---|
| Pesan output* | Tindakan tidak boleh gagal atau menghentikan eksekusi playbook: If status code == 200 (is_success = true) "Successfully uploaded '{0}' to AWS S3 {1} bucket".format(file_path, bucket name aka first string after s3://) Jika file tidak ada (is_success = false) "Tindakan tidak dapat mengupload '{0}' ke AWS S3. Alasan: file dengan jalur upload tersebut tidak ada." Tindakan akan gagal dan menghentikan eksekusi playbook: Jika error fatal, seperti kredensial salah, tidak ada koneksi ke server, error SDK, atau error lainnya: "Error executing action "Upload File To Bucket". Reason: {0}''.format(error.Stacktrace) |
Umum |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.