Buat integrasi untuk mencatat peristiwa dari luar AWS dengan AWS CLI - AWS CloudTrail

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Buat integrasi untuk mencatat peristiwa dari luar AWS dengan AWS CLI

Bagian ini menjelaskan bagaimana Anda dapat menggunakan AWS CLI untuk membuat integrasi CloudTrail Lake untuk mencatat peristiwa dari luar AWS.

Dalam AWS CLI, Anda membuat integrasi dalam empat perintah (tiga jika Anda sudah memiliki penyimpanan data acara yang memenuhi kriteria). Penyimpanan data peristiwa yang Anda gunakan sebagai tujuan integrasi harus untuk satu Wilayah dan akun tunggal; mereka tidak dapat multi-wilayah, mereka tidak dapat mencatat peristiwa untuk organisasi AWS Organizations, dan mereka hanya dapat menyertakan peristiwa aktivitas. Jenis acara di konsol harus Peristiwa dari integrasi. DalamAPI, eventCategory nilainya harusActivityAuditLog. Untuk informasi selengkapnya tentang integrasi, lihatBuat integrasi dengan sumber acara di luar AWS.

  1. Jalankan create-event-data-storeuntuk membuat penyimpanan data acara, jika Anda belum memiliki satu atau lebih penyimpanan data acara yang dapat Anda gunakan untuk integrasi.

    AWS CLI Perintah contoh berikut membuat penyimpanan data peristiwa yang mencatat peristiwa dari luar AWS. Untuk peristiwa aktivitas, nilai pemilih eventCategory bidang adalahActivityAuditLog. Penyimpanan data acara memiliki periode retensi 90 hari yang ditetapkan. Secara default, penyimpanan data acara mengumpulkan peristiwa dari semua Wilayah, tetapi karena ini mengumpulkan AWS non-peristiwa, atur ke satu Wilayah dengan menambahkan --no-multi-region-enabled opsi. Perlindungan penghentian diaktifkan secara default, dan penyimpanan data acara tidak mengumpulkan peristiwa untuk akun di organisasi.

    aws cloudtrail create-event-data-store \ --name my-event-data-store \ --no-multi-region-enabled \ --retention-period 90 \ --advanced-event-selectors '[ { "Name": "Select all external events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["ActivityAuditLog"] } ] } ]'

    Berikut ini adalah contoh respons.

    { "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE", "Name": "my-event-data-store", "AdvancedEventSelectors": [ { "Name": "Select all external events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "ActivityAuditLog" ] } ] } ], "MultiRegionEnabled": true, "OrganizationEnabled": false, "BillingMode": "EXTENDABLE_RETENTION_PRICING", "RetentionPeriod": 90, "TerminationProtectionEnabled": true, "CreatedTimestamp": "2023-10-27T10:55:55.384000-04:00", "UpdatedTimestamp": "2023-10-27T10:57:05.549000-04:00" }

    Anda memerlukan ID penyimpanan data peristiwa (akhiran dariARN, atau EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE dalam contoh respons sebelumnya) untuk melanjutkan ke langkah berikutnya dan membuat saluran Anda.

  2. Jalankan create-channelperintah untuk membuat saluran yang memungkinkan mitra atau aplikasi sumber untuk mengirim acara ke penyimpanan data acara di CloudTrail.

    Saluran memiliki komponen-komponen berikut:

    Sumber

    CloudTrail menggunakan informasi ini untuk menentukan mitra yang mengirimkan data acara atas nama Anda. CloudTrail Sumber diperlukan, dan dapat berupa Custom untuk semua AWS non-acara yang valid, atau nama sumber acara mitra. Maksimal satu saluran diperbolehkan per sumber.

    Untuk informasi tentang Source nilai untuk mitra yang tersedia, lihatInformasi tambahan tentang mitra integrasi.

    Status konsumsi

    Status saluran menunjukkan kapan peristiwa terakhir diterima dari sumber saluran.

    Destinasi

    Tujuannya adalah penyimpanan data acara CloudTrail Danau yang menerima acara dari saluran. Anda dapat mengubah penyimpanan data acara tujuan untuk saluran.

    Untuk berhenti menerima acara dari sumber, hapus saluran.

    Anda memerlukan ID setidaknya satu penyimpanan data acara tujuan untuk menjalankan perintah ini. Jenis tujuan yang valid adalahEVENT_DATA_STORE. Anda dapat mengirim peristiwa yang dicerna ke lebih dari satu penyimpanan data acara. Contoh perintah berikut membuat saluran yang mengirimkan peristiwa ke dua penyimpanan data peristiwa, diwakili oleh mereka IDs dalam Location atribut --destinations parameter. Diperlukan --destinations--name,, dan --source parameter. Untuk menelan acara dari CloudTrail pasangan, tentukan nama mitra sebagai nilai. --source Untuk menelan peristiwa dari aplikasi Anda sendiri di luar AWS, tentukan Custom sebagai nilai. --source

    aws cloudtrail create-channel \ --region us-east-1 \ --destinations '[{"Type": "EVENT_DATA_STORE", "Location": "EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE"}, {"Type": "EVENT_DATA_STORE", "Location": "EXAMPLEg922-5n2l-3vz1- apqw8EXAMPLE"}]' --name my-partner-channel \ --source $partnerSourceName \

    Dalam menanggapi create-channel perintah Anda, salin ARN saluran baru. Anda perlu ARN untuk menjalankan put-audit-events perintah put-resource-policy dan di langkah berikutnya.

  3. Jalankan put-resource-policyperintah untuk melampirkan kebijakan sumber daya ke saluran. Kebijakan sumber daya adalah dokumen JSON kebijakan yang menentukan tindakan apa yang dapat dilakukan oleh prinsipal tertentu pada sumber daya dan dalam kondisi apa. Akun yang didefinisikan sebagai prinsipal dalam kebijakan sumber daya saluran dapat memanggil PutAuditEvents API untuk menyampaikan peristiwa.

    catatan

    Jika Anda tidak membuat kebijakan sumber daya untuk saluran, hanya pemilik saluran yang dapat memanggil saluran tersebut. PutAuditEvents API

    Informasi yang diperlukan untuk kebijakan ditentukan oleh jenis integrasi.

    • Untuk integrasi arah, CloudTrail mewajibkan kebijakan untuk memuat AWS akun mitraIDs, dan mengharuskan Anda memasukkan ID eksternal unik yang disediakan oleh mitra. CloudTrail secara otomatis menambahkan AWS akun mitra IDs ke kebijakan sumber daya saat Anda membuat integrasi menggunakan CloudTrail konsol. Lihat dokumentasi mitra untuk mempelajari cara mendapatkan nomor AWS akun yang diperlukan untuk kebijakan tersebut.

    • Untuk integrasi solusi, Anda harus menentukan setidaknya satu ID AWS akun sebagai prinsipal, dan secara opsional dapat memasukkan ID eksternal untuk mencegah wakil yang bingung.

    Berikut ini adalah persyaratan untuk kebijakan sumber daya:

    • Sumber daya ARN yang ditentukan dalam kebijakan harus sesuai dengan ARN saluran yang dilampirkan kebijakan.

    • Kebijakan ini hanya berisi satu tindakan: cloudtrail-data: PutAuditEvents

    • Kebijakan tersebut berisi setidaknya satu pernyataan. Kebijakan tersebut dapat memiliki maksimal 20 pernyataan.

    • Setiap pernyataan berisi setidaknya satu prinsipal. Sebuah pernyataan dapat memiliki maksimal 50 kepala sekolah.

    aws cloudtrail put-resource-policy \ --resource-arn "channelARN" \ --policy "{ "Version": "2012-10-17", "Statement": [ { "Sid": "ChannelPolicy", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:root", "arn:aws:iam::123456789012:root" ] }, "Action": "cloudtrail-data:PutAuditEvents", "Resource": "arn:aws:cloudtrail:us-east-1:777788889999:channel/EXAMPLE-80b5-40a7-ae65-6e099392355b", "Condition": { "StringEquals": { "cloudtrail:ExternalId": "UniqueExternalIDFromPartner" } } } ] }"

    Untuk informasi selengkapnya tentang kebijakan sumber daya, lihatAWS CloudTrail contoh kebijakan berbasis sumber daya.

  4. Jalankan PutAuditEventsAPIuntuk menelan acara aktivitas Anda ke dalam CloudTrail. Anda memerlukan muatan acara yang CloudTrail ingin Anda tambahkan. Pastikan bahwa tidak ada informasi sensitif atau pengenal pribadi dalam muatan acara sebelum menelannya. CloudTrail Perhatikan bahwa PutAuditEvents API menggunakan cloudtrail-data CLI titik akhir, bukan titik cloudtrail akhir.

    Contoh berikut menunjukkan cara menggunakan put-audit-events CLI perintah. Parameter --audit-events dan --channel-arn diperlukan. --external-idParameter diperlukan jika ID eksternal didefinisikan dalam kebijakan sumber daya. Anda memerlukan ARN saluran yang Anda buat pada langkah sebelumnya. Nilai --audit-events adalah JSON array objek acara. --audit-eventsmenyertakan ID yang diperlukan dari acara, muatan acara yang diperlukan sebagai nilaiEventData, dan checksum opsional untuk membantu memvalidasi integritas acara setelah masuk ke dalam. CloudTrail

    aws cloudtrail-data put-audit-events \ --channel-arn $ChannelArn \ --external-id $UniqueExternalIDFromPartner \ --audit-events \ id="event_ID",eventData='"{event_payload}"' \ id="event_ID",eventData='"{event_payload}"',eventDataChecksum="optional_checksum"

    Berikut ini adalah contoh perintah dengan dua contoh acara.

    aws cloudtrail-data put-audit-events \ --channel-arn arn:aws:cloudtrail:us-east-1:123456789012:channel/EXAMPLE8-0558-4f7e-a06a-43969EXAMPLE \ --external-id UniqueExternalIDFromPartner \ --audit-events \ id="EXAMPLE3-0f1f-4a85-9664-d50a3EXAMPLE",eventData='"{\"eventVersion\":\0.01\",\"eventSource\":\"custom1.domain.com\", ... \}"' \ id="EXAMPLE7-a999-486d-b241-b33a1EXAMPLE",eventData='"{\"eventVersion\":\0.02\",\"eventSource\":\"custom2.domain.com\", ... \}"',eventDataChecksum="EXAMPLE6e7dd61f3ead...93a691d8EXAMPLE"

    Contoh perintah berikut menambahkan --cli-input-json parameter untuk menentukan JSON file (custom-events.json) dari payload acara.

    aws cloudtrail-data put-audit-events --channel-arn $channelArn --external-id $UniqueExternalIDFromPartner --cli-input-json file://custom-events.json --region us-east-1

    Berikut ini adalah isi sampel dari JSON file contoh,custom-events.json.

    { "auditEvents": [ { "eventData": "{\"version\":\"eventData.version\",\"UID\":\"UID\", \"userIdentity\":{\"type\":\"CustomUserIdentity\",\"principalId\":\"principalId\", \"details\":{\"key\":\"value\"}},\"eventTime\":\"2021-10-27T12:13:14Z\",\"eventName\":\"eventName\", \"userAgent\":\"userAgent\",\"eventSource\":\"eventSource\", \"requestParameters\":{\"key\":\"value\"},\"responseElements\":{\"key\":\"value\"}, \"additionalEventData\":{\"key\":\"value\"}, \"sourceIPAddress\":\"12.34.56.78\",\"recipientAccountId\":\"152089810396\"}", "id": "1" } ] }

Anda dapat memverifikasi bahwa integrasi berfungsi, dan CloudTrail menelan peristiwa dari sumber dengan benar, dengan menjalankan get-channelperintah. Output dari get-channel menunjukkan cap waktu terbaru yang CloudTrail menerima acara.

aws cloudtrail get-channel --channel arn:aws:cloudtrail:us-east-1:01234567890:channel/EXAMPLE8-0558-4f7e-a06a-43969EXAMPLE

(Opsional) Hitung nilai checksum

Checksum yang Anda tentukan sebagai nilai EventDataChecksum dalam PutAuditEvents permintaan membantu Anda memverifikasi bahwa CloudTrail menerima peristiwa yang cocok dengan checksum; ini membantu memverifikasi integritas peristiwa. Nilai checksum adalah SHA256 algoritma base64- yang Anda hitung dengan menjalankan perintah berikut.

printf %s "{"eventData": "{\"version\":\"eventData.version\",\"UID\":\"UID\", \"userIdentity\":{\"type\":\"CustomUserIdentity\",\"principalId\":\"principalId\", \"details\":{\"key\":\"value\"}},\"eventTime\":\"2021-10-27T12:13:14Z\",\"eventName\":\"eventName\", \"userAgent\":\"userAgent\",\"eventSource\":\"eventSource\", \"requestParameters\":{\"key\":\"value\"},\"responseElements\":{\"key\":\"value\"}, \"additionalEventData\":{\"key\":\"value\"}, \"sourceIPAddress\":\"source_IP_address\", \"recipientAccountId\":\"recipient_account_ID\"}", "id": "1"}" \ | openssl dgst -binary -sha256 | base64

Perintah mengembalikan checksum. Berikut adalah contohnya.

EXAMPLEDHjkI8iehvCUCWTIAbNYkOgO/t0YNw+7rrQE=

Nilai checksum menjadi nilai EventDataChecksum dalam PutAuditEvents permintaan Anda. Jika checksum tidak cocok dengan checksum untuk acara yang disediakan, CloudTrail tolak acara dengan kesalahanInvalidChecksum.