Berbagi file CloudTrail log antar AWS akun - AWS CloudTrail

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

Berbagi file CloudTrail log antar AWS akun

Bagian ini menjelaskan cara berbagi file CloudTrail log antara beberapa AWS akun. Pendekatan yang Anda gunakan untuk berbagi log Akun AWS bergantung pada konfigurasi bucket S3 Anda. Ini adalah opsi untuk berbagi file log:

  • Pemilik bucket diberlakukanKepemilikan Objek S3 adalah setelan tingkat ember Amazon S3 yang dapat Anda gunakan untuk mengontrol kepemilikan objek yang diunggah ke bucket Anda dan untuk menonaktifkan atau mengaktifkan daftar kontrol akses (). ACLs Secara default, Kepemilikan Objek disetel ke setelan diberlakukan pemilik Bucket dan semuanya ACLs dinonaktifkan. Saat ACLs dinonaktifkan, pemilik bucket memiliki semua objek di bucket dan mengelola akses ke data secara eksklusif menggunakan kebijakan manajemen akses. Saat opsi diberlakukan pemilik Bucket disetel, akses dikelola melalui kebijakan bucket, sehingga pengguna tidak perlu mengambil peran.

  • Asumsikan peran untuk berbagi file log — Jika Anda belum memilih setelan yang diterapkan pemilik Bucket, pengguna harus mengambil peran untuk mengakses file log di bucket S3 Anda.

Bagikan file log antar akun dengan mengambil peran

catatan

Bagian ini hanya berlaku untuk bucket Amazon S3 yang tidak menggunakan setelan yang diberlakukan pemilik Bucket.

Bagian ini menjelaskan cara berbagi file CloudTrail log antara beberapa Akun AWS dengan mengasumsikan peran dan menjelaskan skenario untuk berbagi file log.

  • Skenario 1: Berikan akses hanya-baca ke akun yang menghasilkan file log yang telah ditempatkan ke bucket Amazon S3 Anda.

  • Skenario 2: Berikan akses ke semua file log di bucket Amazon S3 Anda ke akun pihak ketiga yang dapat menganalisis file log untuk Anda.

Untuk memberikan akses hanya-baca ke file log di bucket Amazon S3 Anda
  1. Buat IAM peran untuk setiap akun yang ingin Anda bagikan file log. Anda harus menjadi administrator untuk memberikan izin.

    Saat Anda membuat peran, lakukan hal berikut:

    • Pilih Akun AWS opsi lain.

    • Masukkan ID akun dua belas digit dari akun yang akan diberikan akses.

    • Centang MFA kotak Memerlukan jika Anda ingin pengguna memberikan otentikasi multi-faktor sebelum mengambil peran.

    • Pilih kebijakan AmazonS3 ReadOnlyAccess.

      catatan

      Secara default, ReadOnlyAccess kebijakan AmazonS3 memberikan hak pengambilan dan daftar ke semua bucket Amazon S3 dalam akun Anda.

    Untuk detail tentang manajemen izin untuk IAM peran, lihat IAMperan di Panduan IAM Pengguna.

  2. Buat kebijakan akses yang memberikan akses hanya-baca ke akun yang ingin Anda bagikan file log.

  3. Instruksikan setiap akun untuk mengambil peran untuk mengambil file log.

Untuk memberikan akses read-only ke file log dengan akun pihak ketiga
  1. Buat IAM peran untuk akun pihak ketiga yang ingin Anda bagikan file log. Anda harus menjadi administrator untuk memberikan izin.

    Saat Anda membuat peran, lakukan hal berikut:

    • Pilih Akun AWS opsi lain.

    • Masukkan ID akun dua belas digit dari akun yang akan diberikan akses.

    • Masukkan ID eksternal yang memberikan kontrol tambahan atas siapa yang dapat mengambil peran. Untuk informasi selengkapnya, lihat Cara Menggunakan ID Eksternal Saat Memberikan Akses ke AWS Sumber Daya Anda kepada Pihak Ketiga dalam Panduan IAM Pengguna.

    • Pilih kebijakan AmazonS3 ReadOnlyAccess.

      catatan

      Secara default, ReadOnlyAccess kebijakan AmazonS3 memberikan hak pengambilan dan daftar ke semua bucket Amazon S3 dalam akun Anda.

  2. Buat kebijakan akses yang memberikan akses hanya-baca ke akun pihak ketiga yang ingin Anda bagikan file log.

  3. Instruksikan akun pihak ketiga untuk mengambil peran untuk mengambil file log.

Bagian berikut memberikan detail lebih lanjut tentang langkah-langkah ini.

Membuat kebijakan akses untuk memberikan akses ke akun yang Anda miliki

Sebagai pemilik bucket Amazon S3, Anda memiliki kendali penuh atas bucket Amazon S3 CloudTrail yang menulis file log untuk akun lain. Anda ingin berbagi file log setiap unit bisnis kembali ke unit bisnis yang membuatnya. Tapi, Anda tidak ingin unit dapat membaca file log unit lain.

Misalnya, untuk berbagi file log akun B dengan akun B tetapi tidak dengan akun C, Anda harus membuat IAM peran baru di akun Anda yang menentukan bahwa akun B adalah akun tepercaya. Kebijakan kepercayaan peran ini menetapkan bahwa akun B dipercaya untuk mengambil peran yang dibuat oleh akun Anda, dan akan terlihat seperti contoh berikut. Kebijakan kepercayaan dibuat secara otomatis jika Anda membuat peran menggunakan konsol. Jika Anda menggunakan SDK untuk membuat peran, Anda harus memberikan kebijakan kepercayaan sebagai parameter untuk CreateRoleAPI. Jika Anda menggunakan CLI untuk membuat peran, Anda harus menentukan kebijakan kepercayaan dalam create-role CLI perintah.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-B-id:root" }, "Action": "sts:AssumeRole" } ] }

Anda juga harus membuat kebijakan akses untuk menentukan bahwa akun B hanya dapat membaca dari lokasi tempat B menulis file lognya. Kebijakan akses akan terlihat seperti berikut ini. Perhatikan bahwa Sumber Daya ARN menyertakan ID akun dua belas digit untuk akun B, dan awalan yang Anda tentukan, jika ada, saat Anda mengaktifkan CloudTrail akun B selama proses agregasi. Untuk informasi selengkapnya tentang menentukan awalan, lihat. Buat jejak di akun tambahan

penting

Anda harus memastikan bahwa awalan dalam kebijakan akses persis sama dengan awalan yang Anda tentukan saat Anda mengaktifkan akun B. Jika tidak, maka Anda harus mengedit kebijakan akses IAM peran di akun Anda untuk memasukkan awalan aktual untuk akun B. Jika awalan dalam kebijakan akses peran tidak persis sama dengan awalan yang Anda tentukan saat Anda mengaktifkan akun B, maka akun B tidak akan dapat mengakses file lognya. CloudTrail CloudTrail

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/AWSLogs/account-B-id/*" }, { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket" } ] }

Gunakan proses sebelumnya untuk akun tambahan apa pun.

Setelah Anda membuat peran untuk setiap akun dan menentukan kebijakan kepercayaan dan akses yang sesuai, dan setelah IAM pengguna di setiap akun diberikan akses oleh administrator akun tersebut, IAM pengguna di akun B atau C dapat mengambil peran secara terprogram.

Untuk informasi selengkapnya, lihat Dengan asumsi peran.

Membuat kebijakan akses untuk memberikan akses ke pihak ketiga

Anda harus membuat IAM peran terpisah untuk akun pihak ketiga. Saat Anda membuat peran, AWS secara otomatis menciptakan hubungan kepercayaan, yang menentukan bahwa akun pihak ketiga akan dipercaya untuk mengambil peran tersebut. Kebijakan akses untuk peran menentukan tindakan apa yang dapat dilakukan akun tersebut. Untuk informasi selengkapnya tentang membuat peran, lihat Membuat IAM peran.

Misalnya, hubungan kepercayaan yang dibuat oleh AWS menentukan bahwa akun pihak ketiga (akun Z dalam contoh ini) dipercaya untuk mengambil peran yang telah Anda buat. Berikut ini adalah contoh kebijakan kepercayaan:

{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::account-Z-id:root"}, "Action": "sts:AssumeRole" }] }

Jika Anda menetapkan ID eksternal saat membuat peran untuk akun pihak ketiga, kebijakan akses berisi Condition elemen tambahan yang menguji ID unik yang ditetapkan oleh akun tersebut. Tes dilakukan ketika peran diasumsikan. Contoh kebijakan akses berikut memiliki Condition elemen.

Untuk informasi selengkapnya, lihat Cara menggunakan ID eksternal saat memberikan akses ke AWS sumber daya Anda kepada pihak ketiga dalam Panduan IAM Pengguna.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::account-Z-id:root"}, "Action": "sts:AssumeRole", "Condition": {"StringEquals": {"sts:ExternalId": "external-ID-issued-by-account-Z"}} }] }

Anda juga harus membuat kebijakan akses untuk akun Anda untuk menentukan bahwa akun pihak ketiga dapat membaca semua log dari bucket Amazon S3. Kebijakan akses akan terlihat seperti contoh berikut. Kartu liar (*) di akhir Resource nilai menunjukkan bahwa akun pihak ketiga dapat mengakses file log apa pun di bucket S3 yang telah diberikan aksesnya.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" }, { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket" } ] }

Setelah Anda membuat peran untuk akun pihak ketiga dan menentukan hubungan kepercayaan dan kebijakan akses yang sesuai, IAM pengguna di akun pihak ketiga harus secara terprogram mengambil peran tersebut agar dapat membaca file log dari bucket. Untuk informasi selengkapnya, lihat Dengan asumsi peran.

Dengan asumsi peran

Anda harus menunjuk IAM pengguna terpisah untuk mengambil setiap peran yang Anda buat di setiap akun. Anda kemudian harus memastikan bahwa setiap IAM pengguna memiliki izin yang sesuai.

IAMpengguna dan peran

Setelah Anda membuat peran dan kebijakan yang diperlukan, Anda harus menunjuk IAM pengguna di setiap akun yang ingin Anda bagikan file. Setiap IAM pengguna secara terprogram mengasumsikan peran yang sesuai untuk mengakses file log. Ketika pengguna mengambil peran, AWS mengembalikan kredensi keamanan sementara ke pengguna tersebut. Mereka kemudian dapat membuat permintaan untuk membuat daftar, mengambil, menyalin, atau menghapus file log tergantung pada izin yang diberikan oleh kebijakan akses yang terkait dengan peran tersebut.

Untuk informasi selengkapnya tentang bekerja dengan IAM identitas, lihat IAMIdentitas (pengguna, grup pengguna, dan peran).

Perbedaan utama dalam kebijakan akses yang Anda buat untuk setiap IAM peran di setiap skenario.

Membuat kebijakan izin untuk pengguna IAM

Untuk melakukan tindakan yang diizinkan oleh peran, IAM pengguna harus memiliki izin untuk memanggil AWS STS AssumeRoleAPI. Anda harus mengedit kebijakan untuk setiap pengguna untuk memberi mereka izin yang sesuai. Untuk melakukannya, Anda menetapkan elemen Resource dalam kebijakan yang Anda lampirkan ke IAM pengguna. Contoh berikut menunjukkan kebijakan untuk IAM pengguna di akun lain yang memungkinkan pengguna tersebut untuk mengambil peran bernama yang Test dibuat sebelumnya oleh Akun A.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["sts:AssumeRole"], "Resource": "arn:aws:iam::account-A-id:role/Test" } ] }
Untuk menyunting kebijakan yang dikelola pelanggan (konsol)
  1. Masuk ke AWS Management Console dan buka IAM konsol di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi, pilih Kebijakan.

  3. Dari daftar kebijakan, pilih nama kebijakan untuk disunting. Anda dapat menggunakan kotak pencarian untuk memfilter daftar kebijakan.

  4. Pilih tab Izin, lalu pilih Edit.

  5. Lakukan salah satu hal berikut ini:

    • Pilih opsi Visual untuk mengubah kebijakan Anda tanpa memahami JSON sintaks. Anda dapat membuat perubahan pada layanan, tindakan, sumber daya, atau kondisi opsional untuk setiap blokir izin dalam kebijakan Anda. Anda juga dapat mengimpor kebijakan untuk menambahkan izin tambahan ke bawah kebijakan Anda. Setelah selesai melakukan perubahan, pilih Berikutnya untuk melanjutkan.

    • Pilih JSONopsi untuk mengubah kebijakan Anda dengan mengetik atau menempelkan teks di kotak JSON teks. Anda juga dapat mengimpor kebijakan untuk menambahkan izin tambahan ke bawah kebijakan Anda. Selesaikan peringatan keamanan, kesalahan, atau peringatan umum yang dihasilkan selama validasi kebijakan, lalu pilih Berikutnya.

      catatan

      Anda dapat beralih antara opsi Visual dan JSONeditor kapan saja. Namun, jika Anda membuat perubahan atau memilih Berikutnya di editor Visual, IAM mungkin merestrukturisasi kebijakan Anda untuk mengoptimalkannya untuk editor visual. Untuk informasi selengkapnya, lihat Restrukturisasi kebijakan di IAMPanduan Pengguna.

  6. Pada halaman Tinjau dan simpan, tinjau Izin yang ditentukan dalam kebijakan ini, lalu pilih Simpan perubahan untuk menyimpan pekerjaan Anda.

  7. Jika kebijakan terkelola sudah memiliki maksimal lima versi, memilih Simpan perubahan akan menampilkan kotak dialog. Untuk menyimpan versi baru Anda, versi kebijakan non-default tertua akan dihapus dan diganti dengan versi baru ini. Secara opsional, Anda dapat mengatur versi baru sebagai versi kebijakan default.

    Pilih Simpan perubahan untuk menyimpan versi kebijakan baru Anda.

Memanggil AssumeRole

Pengguna dapat mengambil peran dengan membuat aplikasi yang memanggil AWS STS AssumeRoleAPIdan meneruskan nama sesi peran, Amazon Resource Number (ARN) peran yang akan diambil, dan ID eksternal opsional. Nama sesi peran ditentukan oleh akun yang membuat peran untuk diasumsikan. ID eksternal, jika ada, ditentukan oleh akun pihak ketiga dan diteruskan ke akun pemilik untuk dimasukkan selama pembuatan peran. Untuk informasi selengkapnya, lihat Cara Menggunakan ID Eksternal Saat Memberikan Akses ke AWS Sumber Daya Anda kepada Pihak Ketiga dalam Panduan IAM Pengguna. Anda dapat mengambil ARN dari Akun A dengan membuka IAM konsol.

Untuk menemukan ARN Nilai di Akun A dengan IAM konsol
  1. Pilih Peran

  2. Pilih peran yang ingin Anda periksa.

  3. Cari Peran ARN di bagian Ringkasan.

AssumeRole APIPengembalian kredensi sementara untuk digunakan untuk mengakses sumber daya dalam memiliki akun. Dalam contoh ini, sumber daya yang ingin Anda akses adalah bucket Amazon S3 dan file log yang berisi bucket. Kredensi sementara memiliki izin yang Anda tetapkan dalam kebijakan akses peran.

Contoh Python berikut (menggunakan AWS SDK for Python (Boto)) menunjukkan cara memanggil AssumeRole dan cara menggunakan kredenal keamanan sementara yang dikembalikan untuk mencantumkan semua bucket Amazon S3 yang dikendalikan oleh Akun A.

def list_buckets_from_assumed_role(user_key, assume_role_arn, session_name): """ Assumes a role that grants permission to list the Amazon S3 buckets in the account. Uses the temporary credentials from the role to list the buckets that are owned by the assumed role's account. :param user_key: The access key of a user that has permission to assume the role. :param assume_role_arn: The Amazon Resource Name (ARN) of the role that grants access to list the other account's buckets. :param session_name: The name of the STS session. """ sts_client = boto3.client( "sts", aws_access_key_id=user_key.id, aws_secret_access_key=user_key.secret ) try: response = sts_client.assume_role( RoleArn=assume_role_arn, RoleSessionName=session_name ) temp_credentials = response["Credentials"] print(f"Assumed role {assume_role_arn} and got temporary credentials.") except ClientError as error: print( f"Couldn't assume role {assume_role_arn}. Here's why: " f"{error.response['Error']['Message']}" ) raise # Create an S3 resource that can access the account with the temporary credentials. s3_resource = boto3.resource( "s3", aws_access_key_id=temp_credentials["AccessKeyId"], aws_secret_access_key=temp_credentials["SecretAccessKey"], aws_session_token=temp_credentials["SessionToken"], ) print(f"Listing buckets for the assumed role's account:") try: for bucket in s3_resource.buckets.all(): print(bucket.name) except ClientError as error: print( f"Couldn't list buckets for the account. Here's why: " f"{error.response['Error']['Message']}" ) raise

Berhenti berbagi file CloudTrail log antar AWS akun

Untuk berhenti berbagi file log ke yang lain Akun AWS, hapus peran yang Anda buat untuk akun itu. Untuk selengkapnya tentang cara menghapus peran, lihat Menghapus peran atau profil instance.