Keamanan di AWS AppConfig - AWS AppConfig

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

Keamanan di AWS AppConfig

Keamanan cloud di AWS adalah prioritas tertinggi. Sebagai AWS pelanggan, Anda mendapat manfaat dari pusat data dan arsitektur jaringan yang dibangun untuk memenuhi persyaratan organisasi yang paling sensitif terhadap keamanan.

Keamanan adalah tanggung jawab bersama antara Anda AWS dan Anda. Model tanggung jawab bersama menjelaskan hal ini sebagai keamanan cloud dan keamanan dalam cloud:

  • Keamanan cloud — AWS bertanggung jawab untuk melindungi infrastruktur yang menjalankan AWS layanan di AWS Cloud. AWS juga memberi Anda layanan yang dapat Anda gunakan dengan aman. Auditor pihak ketiga secara teratur menguji dan memverifikasi efektivitas keamanan kami sebagai bagian dari Program AWS Kepatuhan Program AWS Kepatuhan . Untuk mempelajari tentang program kepatuhan yang berlaku AWS Systems Manager, lihat AWS Layanan dalam Lingkup oleh AWS Layanan Program Kepatuhan .

  • Keamanan di cloud — Tanggung jawab Anda ditentukan oleh AWS layanan yang Anda gunakan. Anda juga bertanggung jawab atas faktor lain, yang mencakup sensitivitas data Anda, persyaratan perusahaan Anda, serta undang-undang dan peraturan yang berlaku.

AWS AppConfig adalah kemampuan AWS Systems Manager. Untuk memahami cara menerapkan model tanggung jawab bersama saat menggunakan AWS AppConfig, lihat Keamanan di AWS Systems Manager. Bagian tersebut menjelaskan cara mengonfigurasi Systems Manager untuk memenuhi tujuan keamanan dan kepatuhan AWS AppConfig.

Terapkan akses hak akses paling rendah

Sebagai praktik terbaik keamanan, berikan izin minimum yang diperlukan yang diperlukan identitas untuk melakukan tindakan spesifik pada sumber daya tertentu dalam kondisi tertentu. AWS AppConfig Agen menawarkan dua fitur yang memungkinkan agen untuk mengakses filesystem dari sebuah instance atau container: backup dan write to disk. Jika Anda mengaktifkan fitur ini, verifikasi bahwa hanya AWS AppConfig Agen yang memiliki izin untuk menulis ke file konfigurasi yang ditunjuk pada sistem file. Juga verifikasi bahwa hanya proses yang diperlukan untuk membaca dari file konfigurasi ini yang memiliki kemampuan untuk melakukannya. Menerapkan akses hak akses paling rendah adalah hal mendasar dalam mengurangi risiko keamanan dan dampak yang dapat diakibatkan oleh kesalahan atau niat jahat.

Untuk informasi selengkapnya tentang penerapan akses hak istimewa terkecil, lihat SEC03-BP02 Memberikan akses hak istimewa paling sedikit di Panduan Pengguna.AWS Well-Architected Tool Untuk informasi selengkapnya tentang fitur AWS AppConfig Agen yang disebutkan di bagian ini, lihatMenggunakan manifes untuk mengaktifkan fitur pengambilan tambahan.

Enkripsi data saat istirahat untuk AWS AppConfig

AWS AppConfig menyediakan enkripsi secara default untuk melindungi data pelanggan saat istirahat menggunakan Kunci milik AWS.

Kunci milik AWS— AWS AppConfig menggunakan kunci ini secara default untuk secara otomatis mengenkripsi data yang digunakan oleh layanan dan dihosting di penyimpanan AWS AppConfig data. Anda tidak dapat melihat, mengelola, atau menggunakan Kunci milik AWS, atau mengaudit penggunaannya. Namun, Anda tidak perlu mengambil tindakan apa pun atau mengubah program apa pun untuk melindungi kunci yang mengenkripsi data Anda. Untuk informasi lebih lanjut, lihat Kunci milik AWS dalam Panduan Pengembang AWS Key Management Service .

Meskipun Anda tidak dapat menonaktifkan lapisan enkripsi ini atau memilih jenis enkripsi alternatif, Anda dapat menentukan kunci terkelola pelanggan yang akan digunakan saat menyimpan data konfigurasi yang dihosting di penyimpanan AWS AppConfig data dan saat Anda menerapkan data konfigurasi.

Kunci terkelola pelanggan — AWS AppConfig mendukung penggunaan kunci terkelola pelanggan simetris yang Anda buat, miliki, dan kelola untuk menambahkan lapisan enkripsi kedua di atas yang ada Kunci milik AWS. Karena Anda memiliki kontrol penuh atas lapisan enkripsi ini, Anda dapat melakukan tugas-tugas seperti:

  • Menetapkan dan memelihara kebijakan dan hibah utama

  • Menetapkan dan memelihara IAM kebijakan

  • Mengaktifkan dan menonaktifkan kebijakan utama

  • Memutar bahan kriptografi kunci

  • Menambahkan tanda

  • Membuat alias kunci

  • Kunci penjadwalan untuk penghapusan

Untuk informasi selengkapnya, lihat Kunci terkelola pelanggan di Panduan AWS Key Management Service Pengembang.

AWS AppConfig mendukung kunci yang dikelola pelanggan

AWS AppConfig menawarkan dukungan untuk enkripsi kunci yang dikelola pelanggan untuk data konfigurasi. Untuk versi konfigurasi yang disimpan ke penyimpanan data yang AWS AppConfig dihosting, pelanggan dapat mengatur profil konfigurasi yang sesuai. KmsKeyIdentifier Setiap kali versi baru data konfigurasi dibuat menggunakan CreateHostedConfigurationVersion API operasi, AWS AppConfig menghasilkan kunci AWS KMS data dari KmsKeyIdentifier untuk mengenkripsi data sebelum menyimpannya. Ketika data kemudian diakses, baik selama GetHostedConfigurationVersion atau StartDeployment API operasi, AWS AppConfig mendekripsi data konfigurasi menggunakan informasi tentang kunci data yang dihasilkan.

AWS AppConfig juga menawarkan dukungan untuk enkripsi kunci yang dikelola pelanggan untuk data konfigurasi yang digunakan. Untuk mengenkripsi data konfigurasi, pelanggan dapat menyediakan KmsKeyIdentifier untuk penyebaran mereka. AWS AppConfig menghasilkan kunci AWS KMS data dengan ini KmsKeyIdentifier untuk mengenkripsi data pada StartDeployment API operasi.

AWS AppConfig akses enkripsi

Saat membuat kunci yang dikelola pelanggan, gunakan kebijakan kunci berikut untuk memastikan bahwa kunci tersebut dapat digunakan.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account_ID:role/role_name" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" } ]

Untuk mengenkripsi data konfigurasi yang dihosting dengan kunci terkelola pelanggan, panggilan identitas CreateHostedConfigurationVersion memerlukan pernyataan kebijakan berikut yang dapat ditetapkan ke pengguna, grup, atau peran:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:GenerateDataKey, "Resource": "arn:aws:kms:Region:account_ID:key_ID" } ] }

Jika Anda menggunakan rahasia Secrets Manager atau data konfigurasi lainnya yang dienkripsi dengan kunci yang dikelola pelanggan, Anda retrievalRoleArn harus kms:Decrypt mendekripsi dan mengambil data.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:Region:account_ID:configuration source/object" } ] }

Saat memanggil AWS AppConfig StartDeploymentAPIoperasi, panggilan identitas StartDeployment memerlukan IAM kebijakan berikut yang dapat ditetapkan ke pengguna, grup, atau peran:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:GenerateDataKey*" ], "Resource": "arn:aws:kms:Region:account_ID:key_ID" } ] }

Saat memanggil AWS AppConfig GetLatestConfigurationAPIoperasi, panggilan identitas GetLatestConfiguration memerlukan kebijakan berikut yang dapat ditetapkan ke pengguna, grup, atau peran:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt, "Resource": "arn:aws:kms:Region:account_ID:key_ID" } ] }

Konteks enkripsi

Konteks enkripsi adalah kumpulan opsional pasangan kunci-nilai yang berisi informasi kontekstual tambahan tentang data.

AWS KMS menggunakan konteks enkripsi sebagai data otentikasi tambahan untuk mendukung enkripsi yang diautentikasi. Bila Anda menyertakan konteks enkripsi dalam permintaan untuk mengenkripsi data, AWS KMS mengikat konteks enkripsi ke data terenkripsi. Untuk mendekripsi data, Anda menyertakan konteks enkripsi yang sama dalam permintaan.

AWS AppConfig konteks enkripsi: AWS AppConfig menggunakan konteks enkripsi di semua operasi AWS KMS kriptografi untuk data dan penerapan konfigurasi host terenkripsi. Konteks berisi kunci yang sesuai dengan jenis data dan nilai yang mengidentifikasi item data tertentu.

Memantau kunci enkripsi Anda untuk AWS

Saat menggunakan kunci terkelola AWS KMS pelanggan AWS AppConfig, Anda dapat menggunakan AWS CloudTrail atau Amazon CloudWatch Logs untuk melacak permintaan yang AWS AppConfig dikirim AWS KMS.

Contoh berikut adalah CloudTrail peristiwa untuk memantau AWS KMS operasi yang dipanggil oleh Decrypt AWS AppConfig untuk mengakses data yang dienkripsi oleh kunci yang dikelola pelanggan Anda:

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "appconfig.amazonaws.com" }, "eventTime": "2023-01-03T02:22:28z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "Region", "sourceIPAddress": "172.12.34.56", "userAgent": "ExampleDesktop/1.0 (V1; OS)", "requestParameters": { "encryptionContext": { "aws:appconfig:deployment:arn": "arn:aws:appconfig:Region:account_ID:application/application_ID/environment/environment_ID/deployment/deployment_ID" }, "keyId": "arn:aws:kms:Region:account_ID:key/key_ID", "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "account_ID", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:Region:account_ID:key_ID" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "account_ID", "sharedEventID": "dc129381-1d94-49bd-b522-f56a3482d088" }

Akses AWS AppConfig menggunakan endpoint antarmuka ()AWS PrivateLink

Anda dapat menggunakan AWS PrivateLink untuk membuat koneksi pribadi antara Anda VPC dan AWS AppConfig. Anda dapat mengakses AWS AppConfig seolah-olah itu ada di AndaVPC, tanpa menggunakan gateway internet, NAT perangkat, VPN koneksi, atau AWS Direct Connect koneksi. Contoh di Anda VPC tidak memerlukan alamat IP publik untuk mengakses AWS AppConfig.

Anda membuat koneksi pribadi ini dengan membuat titik akhir antarmuka, yang didukung oleh AWS PrivateLink. Kami membuat antarmuka jaringan endpoint di setiap subnet yang Anda aktifkan untuk titik akhir antarmuka. Ini adalah antarmuka jaringan yang dikelola pemohon yang berfungsi sebagai titik masuk untuk lalu lintas yang ditakdirkan. AWS AppConfig

Untuk informasi selengkapnya, lihat Mengakses Layanan AWS melalui AWS PrivateLink di Panduan AWS PrivateLink .

Pertimbangan untuk AWS AppConfig

Sebelum Anda menyiapkan titik akhir antarmuka AWS AppConfig, tinjau Pertimbangan dalam Panduan.AWS PrivateLink

AWS AppConfig mendukung membuat panggilan ke appconfigdan appconfigdatalayanan melalui titik akhir antarmuka.

Buat titik akhir antarmuka untuk AWS AppConfig

Anda dapat membuat titik akhir antarmuka untuk AWS AppConfig menggunakan VPC konsol Amazon atau AWS Command Line Interface (AWS CLI). Untuk informasi selengkapnya, lihat Membuat titik akhir antarmuka di AWS PrivateLink Panduan.

Buat titik akhir antarmuka untuk AWS AppConfig menggunakan nama layanan berikut:

com.amazonaws.region.appconfig
com.amazonaws.region.appconfigdata

Jika Anda mengaktifkan private DNS untuk titik akhir antarmuka, Anda dapat membuat API permintaan untuk AWS AppConfig menggunakan DNS nama Regional default. Misalnya, appconfig.us-east-1.amazonaws.com dan appconfigdata.us-east-1.amazonaws.com.

Buat kebijakan titik akhir untuk titik akhir antarmuka Anda

Kebijakan endpoint adalah IAM sumber daya yang dapat Anda lampirkan ke titik akhir antarmuka. Kebijakan endpoint default memungkinkan akses penuh AWS AppConfig melalui titik akhir antarmuka. Untuk mengontrol akses yang diizinkan AWS AppConfig dari AndaVPC, lampirkan kebijakan titik akhir kustom ke titik akhir antarmuka.

kebijakan titik akhir mencantumkan informasi berikut:

  • Prinsipal yang dapat melakukan tindakan (Akun AWS, IAM pengguna, dan IAM peran).

  • Tindakan yang dapat dilakukan.

  • Sumber daya untuk melakukan tindakan.

Untuk informasi selengkapnya, lihat Mengontrol akses ke layanan menggunakan kebijakan titik akhir di Panduan AWS PrivateLink .

Contoh: kebijakan VPC endpoint untuk tindakan AWS AppConfig

Berikut ini adalah contoh kebijakan endpoint kustom. Saat Anda melampirkan kebijakan ini ke titik akhir antarmuka Anda, kebijakan ini akan memberikan akses ke AWS AppConfig tindakan yang tercantum untuk semua prinsip di semua sumber daya.

{ "Statement": [ { "Principal": "*", "Effect": "Allow", "Action": [ "appconfig:CreateApplication", "appconfig:CreateEnvironment", "appconfig:CreateConfigurationProfile", "appconfig:StartDeployment", "appconfig:GetLatestConfiguration" "appconfig:StartConfigurationSession" ], "Resource":"*" } ] }

Rotasi kunci Secrets Manager

Bagian ini menjelaskan informasi keamanan penting tentang AWS AppConfig integrasi dengan Secrets Manager. Untuk informasi tentang Secrets Manager, lihat Apa itu AWS Secrets Manager? dalam AWS Secrets Manager User Guide.

Menyiapkan rotasi otomatis rahasia Secrets Manager yang digunakan oleh AWS AppConfig

Rotasi adalah proses memperbarui rahasia yang disimpan di Secrets Manager secara berkala. Ketika Anda memutar rahasia, Anda memperbarui kredensil di kedua rahasia dan database atau layanan. Anda dapat mengonfigurasi rotasi rahasia otomatis di Secrets Manager dengan menggunakan AWS Lambda fungsi untuk memperbarui rahasia dan database. Untuk informasi selengkapnya, lihat Memutar AWS Secrets Manager rahasia di Panduan AWS Secrets Manager Pengguna.

Untuk mengaktifkan rotasi kunci rahasia Secrets Manager yang digunakan oleh AWS AppConfig, perbarui fungsi Lambda rotasi Anda dan gunakan rahasia yang diputar.

catatan

Terapkan profil AWS AppConfig konfigurasi Anda setelah rahasia Anda diputar dan diperbarui sepenuhnya ke versi baru. Anda dapat menentukan apakah rahasia diputar karena status VersionStage perubahan dari AWSPENDING keAWSCURRENT. Penyelesaian rotasi rahasia terjadi dalam finish_secret fungsi Secrets Manager Rotation Templates.

Berikut adalah contoh fungsi yang memulai AWS AppConfig penerapan setelah rahasia diputar.

import time import boto3 client = boto3.client('appconfig') def finish_secret(service_client, arn, new_version): """Finish the rotation by marking the pending secret as current This method finishes the secret rotation by staging the secret staged AWSPENDING with the AWSCURRENT stage. Args: service_client (client): The secrets manager service client arn (string): The secret ARN or other identifier new_version (string): The new version to be associated with the secret """ # First describe the secret to get the current version metadata = service_client.describe_secret(SecretId=arn) current_version = None for version in metadata["VersionIdsToStages"]: if "AWSCURRENT" in metadata["VersionIdsToStages"][version]: if version == new_version: # The correct version is already marked as current, return logger.info("finishSecret: Version %s already marked as AWSCURRENT for %s" % (version, arn)) return current_version = version break # Finalize by staging the secret version current service_client.update_secret_version_stage(SecretId=arn, VersionStage="AWSCURRENT", MoveToVersionId=new_version, RemoveFromVersionId=current_version) # Deploy rotated secret response = client.start_deployment( ApplicationId='TestApp', EnvironmentId='TestEnvironment', DeploymentStrategyId='TestStrategy', ConfigurationProfileId='ConfigurationProfileId', ConfigurationVersion=new_version, KmsKeyIdentifier=key, Description='Deploy secret rotated at ' + str(time.time()) ) logger.info("finishSecret: Successfully set AWSCURRENT stage to version %s for secret %s." % (new_version, arn))