Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Langkah 1: Buat tujuan
penting
Semua langkah dalam prosedur ini harus dilakukan di akun penerima data log.
Untuk contoh ini, akun penerima data log memiliki ID akun 999999999999, sedangkan ID AWS akun pengirim AWS data log adalah 111111111111.
Contoh ini membuat tujuan menggunakan aliran Kinesis Data RecipientStream Streams yang disebut, dan peran CloudWatch yang memungkinkan Log untuk menulis data ke sana.
Saat tujuan dibuat, CloudWatch Log mengirimkan pesan pengujian ke tujuan atas nama akun penerima. Saat filter langganan aktif nanti, CloudWatch Log mengirimkan peristiwa log ke tujuan atas nama akun sumber.
Untuk membuat tujuan
-
Di akun penerima, buat aliran tujuan di Kinesis Data Streams. Di jendela perintah, ketik:
aws kinesis create-stream --stream-name "RecipientStream" --shard-count 1
-
Tunggu hingga streaming menjadi aktif. Anda dapat menggunakan perintah aws kinesis describe-stream untuk memeriksa. StreamDescription StreamStatusproperti. Selain itu, perhatikan StreamDescriptionARNnilai.Stream karena Anda akan meneruskannya ke CloudWatch Log nanti:
aws kinesis describe-stream --stream-name "RecipientStream"
{ "StreamDescription": { "StreamStatus": "ACTIVE", "StreamName": "RecipientStream", "StreamARN": "arn:aws:kinesis:us-east-1:999999999999:stream/RecipientStream", "Shards": [ { "ShardId": "shardId-000000000000", "HashKeyRange": { "EndingHashKey": "34028236692093846346337460743176EXAMPLE", "StartingHashKey": "0" }, "SequenceNumberRange": { "StartingSequenceNumber": "4955113521868881845667950383198145878459135270218EXAMPLE" } } ] } }
Mungkin diperlukan satu atau dua menit bagi pengaliran Anda untuk muncul dalam keadaan aktif.
-
Buat IAM peran yang memberikan izin kepada CloudWatch Log untuk memasukkan data ke aliran Anda. Pertama, Anda harus membuat kebijakan kepercayaan dalam file ~/ TrustPolicyFor CWL .json. Gunakan editor teks untuk membuat file kebijakan ini, jangan gunakan IAM konsol.
Kebijakan ini mencakup kunci konteks kondisi
aws:SourceArn
global yang menentukansourceAccountId
untuk membantu mencegah masalah keamanan wakil yang membingungkan. Jika Anda belum mengetahui ID akun sumber pada panggilan pertama, kami sarankan Anda meletakkan tujuan ARN di ARN bidang sumber. Dalam panggilan berikutnya, Anda harus mengatur sumber ARN menjadi sumber sebenarnya ARN yang Anda kumpulkan dari panggilan pertama. Untuk informasi selengkapnya, lihat Pencegahan Deputi Bingung.{ "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Condition": { "StringLike": { "aws:SourceArn": [ "arn:aws:logs:
region
:sourceAccountId
:*", "arn:aws:logs:region
:recipientAccountId
:*" ] } }, "Action": "sts:AssumeRole" } } -
Gunakan perintah aws iam create-role untuk membuat IAM peran, dengan menentukan file kebijakan kepercayaan. Perhatikan nilai Role.Arn yang dikembalikan karena itu juga akan diteruskan ke Log nanti: CloudWatch
aws iam create-role \ --role-name CWLtoKinesisRole \ --assume-role-policy-document file://~/TrustPolicyForCWL.json
{ "Role": { "AssumeRolePolicyDocument": { "Statement": { "Action": "sts:AssumeRole", "Effect": "Allow", "Condition": { "StringLike": { "aws:SourceArn": [ "arn:aws:logs:
region
:sourceAccountId
:*", "arn:aws:logs:region
:recipientAccountId
:*" ] } }, "Principal": { "Service": "logs.amazonaws.com" } } }, "RoleId": "AAOIIAH450GAB4HC5F431", "CreateDate": "2023-05-29T13:46:29.431Z", "RoleName": "CWLtoKinesisRole", "Path": "/", "Arn": "arn:aws:iam::999999999999:role/CWLtoKinesisRole" } } -
Buat kebijakan izin untuk menentukan tindakan yang dapat dilakukan CloudWatch Log di akun Anda. Pertama, gunakan editor teks untuk membuat kebijakan izin dalam file ~/ PermissionsFor CWL .json:
{ "Statement": [ { "Effect": "Allow", "Action": "kinesis:PutRecord", "Resource": "arn:aws:kinesis:
region
:999999999999:stream/RecipientStream" } ] } -
Kaitkan kebijakan izin dengan peran dengan menggunakan perintah aws iam: put-role-policy
aws iam put-role-policy \ --role-name CWLtoKinesisRole \ --policy-name Permissions-Policy-For-CWL \ --policy-document file://~/PermissionsForCWL.json
-
Setelah aliran dalam keadaan aktif dan Anda telah membuat IAM peran, Anda dapat membuat tujuan CloudWatch Log.
-
Langkah ini tidak mengaitkan kebijakan akses dengan tujuan Anda dan hanya langkah pertama dari dua langkah yang menyelesaikan pembuatan tujuan. Catat DestinationArnyang dikembalikan dalam muatan:
aws logs put-destination \ --destination-name "testDestination" \ --target-arn "arn:aws:kinesis:
region
:999999999999:stream/RecipientStream" \ --role-arn "arn:aws:iam::999999999999:role/CWLtoKinesisRole"{ "DestinationName" : "testDestination", "RoleArn" : "arn:aws:iam::999999999999:role/CWLtoKinesisRole", "DestinationArn" : "arn:aws:logs:us-east-1:999999999999:destination:testDestination", "TargetArn" : "arn:aws:kinesis:us-east-1:999999999999:stream/RecipientStream" }
-
Setelah langkah 7a selesai, di akun penerima data log, kaitkan kebijakan akses dengan tujuan. Kebijakan ini harus menentukan PutSubscriptionFilter tindakan log: dan memberikan izin ke akun pengirim untuk mengakses tujuan.
Kebijakan memberikan izin ke AWS akun yang mengirim log. Anda dapat menentukan hanya satu akun ini dalam kebijakan, atau jika akun pengirim adalah anggota organisasi, kebijakan dapat menentukan ID organisasi organisasi. Dengan cara ini, Anda dapat membuat hanya satu kebijakan untuk mengizinkan beberapa akun dalam satu organisasi mengirim log ke akun tujuan ini.
Gunakan editor teks untuk membuat file bernama
~/AccessPolicy.json
dengan salah satu pernyataan kebijakan berikut.Kebijakan contoh pertama ini memungkinkan semua akun di organisasi yang memiliki ID
o-1234567890
untuk mengirim log ke akun penerima.{ "Version" : "2012-10-17", "Statement" : [ { "Sid" : "", "Effect" : "Allow", "Principal" : "*", "Action" : ["logs:PutSubscriptionFilter","logs:PutAccountPolicy"], "Resource" : "arn:aws:logs:region:999999999999:destination:testDestination", "Condition": { "StringEquals" : { "aws:PrincipalOrgID" : ["o-1234567890"] } } } ] }
Contoh berikutnya ini memungkinkan hanya akun pengirim data log (111111111111) untuk mengirim log ke akun penerima data log.
{ "Version" : "2012-10-17", "Statement" : [ { "Sid" : "", "Effect" : "Allow", "Principal" : { "AWS" : "111111111111" }, "Action" : ["logs:PutSubscriptionFilter","logs:PutAccountPolicy"], "Resource" : "arn:aws:logs:
region
:999999999999:destination:testDestination" } ] } -
Lampirkan kebijakan yang Anda buat pada langkah sebelumnya ke tujuan.
aws logs put-destination-policy \ --destination-name "testDestination" \ --access-policy file://~/AccessPolicy.json
Kebijakan akses ini memungkinkan pengguna di AWS Akun dengan ID 111111111111 untuk memanggil tujuan dengan PutSubscriptionFilterarn:aws:logs: ARN
region
:999999999999: tujuan:. testDestination Upaya pengguna lain untuk menelepon PutSubscriptionFilter terhadap tujuan ini akan ditolak.Untuk memvalidasi hak istimewa pengguna terhadap kebijakan akses, lihat Menggunakan Validator Kebijakan di Panduan Pengguna. IAM
-
Setelah selesai, jika Anda menggunakan AWS Organizations izin lintas akun, ikuti langkah-langkahnya. Langkah 2: (Hanya jika menggunakan organisasi) Buat IAM peran Jika Anda memberikan izin langsung ke akun lain alih-alih menggunakan Organizations, Anda dapat melewati langkah itu dan melanjutkan ke. Langkah 3: Buat kebijakan filter langganan tingkat akun