Mengintegrasikan AWS S3 dengan Google SecOps

Dokumen ini menjelaskan cara mengintegrasikan AWS S3 dengan Google Security Operations.

Kasus penggunaan

  1. Mengelola bucket
  2. Mendownload file dari bucket
  3. 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:

  1. Verifikasi line-of-sight jaringan antara endpoint layanan regional Google SecOps dan AWS S3.

  2. Dapatkan kredensial API terprogram AWS (ID Kunci Akses dan Kunci Akses Rahasia) dengan izin IAM yang sesuai.

  3. 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.com atau s3.amazonaws.com) melalui port 443/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:

  • Kunci (dipetakan sebagai Kunci)
  • Terakhir Diubah (dipetakan sebagai LastModified)
  • Ukuran (Byte) (dipetakan sebagai Ukuran)
  • Pemilik (dipetakan sebagai Owner/DisplayName)
  • Kelas Penyimpanan (dipetakan sebagai Kelas Penyimpanan)
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.