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 pelanggan AWS, Anda mendapatkan manfaat dari pusat data dan arsitektur jaringan yang dibangun untuk memenuhi persyaratan dari organisasi yang paling sensitif terhadap keamanan.

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

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

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

AWS AppConfigadalah kemampuanAWS Systems Manager. Untuk memahami cara menerapkan model tanggung jawab bersama saat menggunakanAWS AppConfig, lihat Keamanan di AWS Systems Manager. Bagian tersebut menjelaskan cara mengonfigurasi Systems Manager untuk memenuhi tujuan keamanan dan kepatuhanAWS AppConfig.

Terapkan akses hak akses paling rendah

Sebagai praktik keamanan terbaik, 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 terkecil di Panduan Pengguna. AWS Well-Architected Tool Untuk informasi selengkapnya tentang fitur AWS AppConfig Agen yang disebutkan di bagian ini, lihatFitur pengambilan tambahan.

Enkripsi data saat istirahat untuk AWS AppConfig

AWS AppConfigmenyediakan enkripsi secara default untuk melindungi data pelanggan saat istirahat menggunakanKunci 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 menggunakanKunci 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 PengembangAWS Key Management Service.

Meskipun Anda tidak dapat menonaktifkan lapisan enkripsi ini atau memilih jenis enkripsi alternatif, Anda dapat menentukan kunci yang dikelola 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 adaKunci 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 kebijakan IAM

  • 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 AppConfigmendukung kunci yang dikelola pelanggan

AWS AppConfigmenawarkan 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 operasi CreateHostedConfigurationVersion API, AWS AppConfig menghasilkan kunci AWS KMS data dari KmsKeyIdentifier untuk mengenkripsi data sebelum menyimpannya. Ketika data kemudian diakses, baik selama operasi GetHostedConfigurationVersion atau StartDeployment API, AWS AppConfig mendekripsi data konfigurasi menggunakan informasi tentang kunci data yang dihasilkan.

AWS AppConfigjuga 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 AppConfigmenghasilkan kunci AWS KMS data dengan ini KmsKeyIdentifier untuk mengenkripsi data pada operasi StartDeployment API.

AWS AppConfigakses 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 operasi AWS AppConfig StartDeploymentAPI, pemanggilan identitas StartDeployment memerlukan kebijakan IAM 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 operasi AWS AppConfig GetLatestConfigurationAPI, pemanggilan 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 KMSmenggunakan 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 AppConfigkonteks 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 pelangganAWS AppConfig, Anda dapat menggunakan AWS CloudTrail atau Amazon CloudWatch Logs untuk melacak permintaan yang AWS AppConfig dikirimAWS 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 VPC Anda dan. AWS AppConfig Anda dapat mengakses AWS AppConfig seolah-olah itu ada di VPC Anda, tanpa menggunakan gateway internet, perangkat NAT, koneksi VPN, atau koneksi. AWS Direct Connect Instans di VPC Anda tidak memerlukan alamat IP publik untuk mengakses. AWS AppConfig

Anda membuat koneksi pribadi ini dengan membuat titik akhir antarmuka, yang didukung olehAWS 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 antarmukaAWS AppConfig, tinjau Pertimbangan dalam Panduan. AWS PrivateLink

AWS AppConfigmendukung 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 konsol VPC Amazon atau ()AWS Command Line Interface. AWS CLI Untuk informasi selengkapnya, lihat Membuat titik akhir antarmuka di AWS PrivateLinkPanduan.

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

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

Jika Anda mengaktifkan DNS pribadi untuk titik akhir antarmuka, Anda dapat membuat permintaan API untuk AWS AppConfig menggunakan nama DNS 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 sumber daya IAM 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 VPC Anda, lampirkan kebijakan titik akhir kustom ke titik akhir antarmuka.

kebijakan titik akhir mencantumkan informasi berikut:

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

  • 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 ituAWS Secrets Manager? dalam AWS Secrets ManagerUser 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 olehAWS 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))