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
-
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 appconfig
dan appconfigdata
layanan 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))