Terhubung ke AWS KMS melalui VPC endpoint - AWS Key Management Service

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

Terhubung ke AWS KMS melalui VPC endpoint

Anda dapat terhubung langsung AWS KMS melalui titik akhir antarmuka pribadi di cloud pribadi virtual (VPC) Anda. Bila Anda menggunakan antarmuka VPC endpoint, komunikasi antara VPC Anda dan AWS KMS dilakukan sepenuhnya dalam jaringan. AWS

AWS KMSmendukung titik akhir Amazon Virtual Private Cloud (Amazon VPC) yang didukung oleh. AWS PrivateLink Masing-masing VPC endpoint diwakili oleh satu atau lebih Antarmuka Jaringan Elastis (ENI) dengan alamat IP privat di subnet VPC Anda.

Titik akhir VPC antarmuka menghubungkan VPC Anda secara langsung AWS KMS tanpa gateway internet, perangkat NAT, koneksi VPN, atau koneksi. AWS Direct Connect Instans di VPC Anda tidak memerlukan alamat IP publik untuk berkomunikasi dengan AWS KMS.

Wilayah

AWS KMSmendukung kebijakan titik akhir VPC dan titik akhir VPC di semua yang didukung. Wilayah AWS AWS KMS

Pertimbangan untuk VPC endpoint AWS KMS

Sebelum Anda menyiapkan titik akhir VPC antarmuka untukAWS KMS, tinjau topik properti dan batasan titik akhir Antarmuka di Panduan. AWS PrivateLink

AWS KMSdukungan untuk titik akhir VPC mencakup yang berikut ini.

Membuat VPC endpoint untuk AWS KMS

Anda dapat membuat VPC endpoint untuk AWS KMS menggunakan konsol Amazon VPC atau API Amazon VPC. Untuk informasi selengkapnya, lihat Membuat titik akhir antarmuka di AWS PrivateLinkPanduan.

  • Untuk membuat VPC endpoint untuk AWS KMS, gunakan nama layanan berikut:

    com.amazonaws.region.kms

    Sebagai contoh, di Wilayah US West (Oregon) (us-west-2), nama layanan akan menjadi:

    com.amazonaws.us-west-2.kms
  • Untuk membuat titik akhir VPC yang terhubung ke titik akhir AWS KMSFIPS, gunakan nama layanan berikut:

    com.amazonaws.region.kms-fips

    Sebagai contoh, di Wilayah US West (Oregon) (us-west-2), nama layanan akan menjadi:

    com.amazonaws.us-west-2.kms-fips

Untuk mempermudah penggunaan titik akhir VPC, Anda dapat mengaktifkan nama DNS pribadi untuk titik akhir VPC Anda. Jika Anda memilih opsi Aktifkan Nama DNS, nama host AWS KMS DNS standar akan diselesaikan ke titik akhir VPC Anda. Misalnya, https://kms.us-west-2.amazonaws.com akan menyelesaikan ke titik akhir VPC yang terhubung ke nama layanan. com.amazonaws.us-west-2.kms

Opsi ini mempermudah untuk menggunakan VPC endpoint. SDK AWS dan AWS CLI menggunakan nama host DNS AWS KMS standar secara default, sehingga Anda tidak perlu menentukan URL VPC endpoint dalam aplikasi dan perintah.

Untuk informasi selengkapnya, lihat Mengakses layanan melalui titik akhir antarmuka di Panduan. AWS PrivateLink

Terhubung ke VPC endpoint AWS KMS

Anda dapat terhubung ke AWS KMS melalui VPC endpoint dengan menggunakan SDK AWS, AWS CLI atau AWS Tools for PowerShell. Untuk menentukan VPC endpoint, gunakan nama DNS-nya.

Misalnya, perintah kunci-daftar ini menggunakan parameter endpoint-url untuk menentukan VPC endpoint. Untuk menggunakan perintah seperti ini, ganti contoh ID VPC endpoint dengan yang ada di akun Anda.

$ aws kms list-keys --endpoint-url https://vpce-1234abcdf5678c90a-09p7654s-us-east-1a.ec2.us-east-1.vpce.amazonaws.com

Jika Anda mengaktifkan nama host privat ketika Anda membuat VPC endpoint Anda, Anda tidak perlu menentukan URL VPC endpoint di perintah CLI atau konfigurasi aplikasi. Nama host AWS KMS DNS standar diselesaikan ke titik akhir VPC Anda. SDK AWS CLI dan SDK menggunakan nama host ini secara default, sehingga Anda dapat mulai menggunakan titik akhir VPC untuk terhubung ke titik akhir AWS KMS regional tanpa mengubah apa pun di skrip dan aplikasi Anda.

Untuk menggunakan nama host pribadi, enableDnsSupport atribut enableDnsHostnames dan VPC Anda harus disetel ke. true Untuk mengatur atribut ini, gunakan ModifyVpcAttributeoperasi. Untuk detailnya, lihat Melihat dan memperbarui atribut DNS untuk VPC Anda di Panduan Pengguna Amazon VPC.

Mengontrol akses ke VPC endpoint

Untuk mengontrol akses ke VPC endpoint Anda untuk AWS KMS, lampirkan Kebijakan VPC endpoint ke VPC endpoint. Kebijakan titik akhir menentukan apakah prinsipal dapat menggunakan VPC endpoint untuk memanggil operasi AWS KMS pada sumber daya AWS KMS.

Anda dapat membuat kebijakan VPC endpoint ketika Anda membuat titik akhir Anda, dan Anda dapat mengubah kebijakan VPC endpoint setiap saat. Gunakan konsol manajemen VPC, atau operasi atau. CreateVpcEndpointModifyVpcEndpoint Anda juga dapat membuat dan mengubah kebijakan VPC endpoint dengan menggunakan templat AWS CloudFormation. Untuk bantuan menggunakan konsol manajemen VPC, lihat Membuat titik akhir antarmuka dan Memodifikasi titik akhir antarmuka dalam Panduan. AWS PrivateLink

catatan

AWS KMS mendukung kebijakan VPC endpoint dimulai pada bulan Juli 2020. VPC endpoint untuk AWS KMS yang dibuat sebelum tanggal tersebut memiliki Kebijakan VPC endpoint default, tetapi Anda bisa mengubahnya kapan saja.

Untuk mendapatkan bantuan mengenai cara menulis dan memformat dokumen kebijakan JSON, lihat Referensi Kebijakan IAM JSON dalam Panduan Pengguna IAM.

Tentang kebijakan VPC endpoint

Untuk permintaan AWS KMS yang menggunakan VPC endpoint agar berhasil, prinsipal memerlukan izin dari dua sumber:

  • Kebijakan kunci, kebijakan IAM, atau hibah harus memberikan izin utama untuk memanggil operasi pada sumber daya (kunci KMS atau alias).

  • Kebijakan VPC endpoint harus memberikan prinsipal izin untuk menggunakan titik akhir untuk membuat permintaan.

Misalnya, kebijakan kunci mungkin memberikan izin utama untuk memanggil Dekripsi pada kunci KMS tertentu. Namun, kebijakan titik akhir VPC mungkin tidak mengizinkan prinsipal tersebut untuk memanggil Decrypt kunci KMS tersebut dengan menggunakan titik akhir.

Atau kebijakan titik akhir VPC mungkin mengizinkan prinsipal menggunakan titik akhir untuk memanggil DisableKeykunci KMS tertentu. Tetapi jika prinsipal tidak memiliki izin tersebut dari kebijakan kunci, kebijakan IAM, atau hibah, permintaan gagal.

Kebijakan VPC endpoint default

Setiap VPC endpoint memiliki kebijakan VPC endpoint, tetapi Anda tidak diharuskan untuk menentukan kebijakan. Jika Anda tidak menentukan kebijakan, kebijakan titik akhir default memungkinkan semua operasi oleh semua prinsipal di semua sumber daya pada titik akhir.

Namun, untuk sumber daya AWS KMS, prinsipal juga harus memiliki izin untuk memanggil operasi dari kebijakan utama, Kebijakan IAM, atau hibah. Oleh karena itu, dalam praktik, kebijakan default mengatakan bahwa jika prinsipal memiliki izin untuk memanggil operasi pada sumber daya, mereka juga dapat memanggilnya dengan menggunakan titik akhir.

{ "Statement": [ { "Action": "*", "Effect": "Allow", "Principal": "*", "Resource": "*" } ] }

Untuk mengizinkan prinsipal menggunakan titik akhir VPC hanya untuk sebagian dari operasi yang diizinkan, buat atau perbarui kebijakan titik akhir VPC.

Membuat kebijakan VPC endpoint

Kebijakan VPC endpoint menentukan apakah prinsipal memiliki izin untuk menggunakan VPC endpoint untuk melakukan operasi pada sumber daya. Untuk sumber daya AWS KMS, prinsipal juga harus memiliki izin untuk melakukan operasi dari kebijakan utama, Kebijakan IAM, atau hibah.

Setiap pernyataan kebijakan VPC endpoint memerlukan unsur-unsur berikut:

  • Prinsip-prinsip yang dapat melakukan tindakan

  • Tindakan yang dapat dilakukan

  • Sumber daya yang dapat digunakan untuk mengambil tindakan

Pernyataan kebijakan tidak menentukan VPC endpoint. Sebaliknya, berlaku untuk VPC endpoint di mana kebijakan tersebut terpasang. Untuk informasi selengkapnya, lihat Mengendalikan akses ke layanan dengan titik akhir VPC dalam Panduan Pengguna Amazon VPC.

Berikut adalah contoh kebijakan VPC endpoint untuk AWS KMS. Saat dilampirkan ke titik akhir VPC, kebijakan ini memungkinkan ExampleUser untuk menggunakan titik akhir VPC untuk memanggil operasi yang ditentukan pada kunci KMS yang ditentukan. Sebelum menggunakan kebijakan seperti ini, ganti contoh prinsipal dan ARN kunci dengan nilai yang valid dari akun Anda.

{ "Statement":[ { "Sid": "AllowDecryptAndView", "Principal": {"AWS": "arn:aws:iam::111122223333:user/ExampleUser"}, "Effect":"Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:ListAliases", "kms:ListKeys" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }

AWS CloudTrail mencatat semua operasi yang menggunakan VPC endpoint. Namun, CloudTrail log Anda tidak menyertakan operasi yang diminta oleh kepala sekolah di akun lain atau operasi untuk kunci KMS di akun lain.

Dengan demikian, Anda mungkin ingin membuat kebijakan VPC endpoint yang mencegah prinsipal di akun eksternal menggunakan VPC endpoint untuk memanggil operasi AWS KMS apa pun pada kunci apa pun di akun lokal.

Contoh berikut menggunakan aws: PrincipalAccount global condition key untuk menolak akses ke semua prinsipal untuk semua operasi pada semua kunci KMS kecuali prinsipal ada di akun lokal. Sebelum menggunakan kebijakan seperti ini, ganti ID akun contoh dengan yang valid.

{ "Statement": [ { "Sid": "AccessForASpecificAccount", "Principal": {"AWS": "*"}, "Action": "kms:*", "Effect": "Deny", "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "StringNotEquals": { "aws:PrincipalAccount": "111122223333" } } } ] }

Melihat kebijakan VPC endpoint

Untuk melihat kebijakan titik akhir VPC untuk titik akhir, gunakan konsol manajemen VPC atau pengoperasiannya. DescribeVpcEndpoints

Perintah AWS CLI berikut ini mendapat kebijakan untuk titik akhir dengan ID VPC endpoint yang ditentukan.

Sebelum menggunakan perintah ini, ganti ID titik akhir contoh dengan yang valid dari akun Anda.

$ aws ec2 describe-vpc-endpoints \ --query 'VpcEndpoints[?VpcEndpointId==`vpce-1234abcdf5678c90a`].[PolicyDocument]' --output text

Menggunakan VPC endpoint dalam pernyataan kebijakan

Anda dapat mengontrol akses ke sumber daya dan operasi AWS KMS ketika permintaan berasal dari VPC atau menggunakan VPC endpoint. Untuk melakukannya, gunakan salah satu kunci kondisi global berikut dalam kebijakan kunci atau kebijakan IAM.

  • Gunakan kunci kondisi aws:sourceVpce untuk memberikan atau membatasi akses berdasarkan VPC endpoint.

  • Gunakan kunci kondisi aws:sourceVpc untuk memberikan atau membatasi akses berdasarkan VPC yang menjadi host endpoint privat.

catatan

Berhati-hatilah saat membuat kebijakan kunci dan kebijakan IAM berdasarkan VPC endpoint Anda. Jika pernyataan kebijakan mengharuskan permintaan berasal dari VPC atau VPC endpoint tertentu, permintaan dari layanan AWS terintegrasi yang menggunakan sumber daya AWS KMS atas nama Anda mungkin gagal. Untuk bantuan, lihat Menggunakan syarat VPC endpoint dalam kebijakan dengan izin AWS KMS.

Selain itu, kunci syarat aws:sourceIP tidak efektif bila permintaan berasal dari Amazon VPC endpoint. Untuk membatasi permintaan ke VPC endpoint, gunakan kunci kondisi aws:sourceVpce atau aws:sourceVpc. Untuk informasi selengkapnya, lihat Identitas dan manajemen akses untuk titik akhir VPC dan layanan titik akhir VPC di Panduan. AWS PrivateLink

Anda dapat menggunakan kunci kondisi global ini untuk mengontrol akses ke AWS KMS keys (kunci KMS), alias, dan operasi seperti CreateKeyitu tidak bergantung pada sumber daya tertentu.

Misalnya, kebijakan kunci sampel berikut memungkinkan pengguna untuk melakukan beberapa operasi kriptografi dengan kunci KMS hanya ketika permintaan menggunakan titik akhir VPC yang ditentukan. Ketika pengguna membuat permintaan ke AWS KMS, ID VPC endpoint dalam permintaan dibandingkan dengan nilai kunci kondisi aws:sourceVpce dalam kebijakan. Jika tidak cocok, permintaan ditolak.

Untuk menggunakan kebijakan seperti ini, ganti placeholder ID Akun AWS dan ID VPC endpoint dengan nilai yang valid untuk akun Anda.

{ "Id": "example-key-1", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM policies", "Effect": "Allow", "Principal": {"AWS":["111122223333"]}, "Action": ["kms:*"], "Resource": "*" }, { "Sid": "Restrict usage to my VPC endpoint", "Effect": "Deny", "Principal": "*", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1234abcdf5678c90a" } } } ] }

Anda juga dapat menggunakan tombol aws:sourceVpc kondisi untuk membatasi akses ke kunci KMS Anda berdasarkan VPC tempat titik akhir VPC berada.

Kebijakan kunci sampel berikut memungkinkan perintah yang mengelola kunci KMS hanya ketika mereka berasalvpc-12345678. Selain itu, ini memungkinkan perintah yang menggunakan kunci KMS untuk operasi kriptografi hanya ketika mereka berasal. vpc-2b2b2b2b Anda mungkin menggunakan kebijakan seperti ini jika aplikasi berjalan dalam satu VPC, tetapi Anda menggunakan VPC terisolasi kedua untuk fungsi manajemen.

Untuk menggunakan kebijakan seperti ini, ganti placeholder ID Akun AWS dan ID VPC endpoint dengan nilai yang valid untuk akun Anda.

{ "Id": "example-key-2", "Version": "2012-10-17", "Statement": [ { "Sid": "Allow administrative actions from vpc-12345678", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": [ "kms:Create*","kms:Enable*","kms:Put*","kms:Update*", "kms:Revoke*","kms:Disable*","kms:Delete*", "kms:TagResource", "kms:UntagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpc": "vpc-12345678" } } }, { "Sid": "Allow key usage from vpc-2b2b2b2b", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": [ "kms:Encrypt","kms:Decrypt","kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpc": "vpc-2b2b2b2b" } } }, { "Sid": "Allow read actions from everywhere", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": [ "kms:Describe*","kms:List*","kms:Get*" ], "Resource": "*", } ] }

Mencatat VPC endpoint Anda

AWS CloudTrail mencatat semua operasi yang menggunakan VPC endpoint. Ketika permintaan ke AWS KMS menggunakan VPC endpoint, ID VPC endpoint muncul di entri log AWS CloudTrail yang mencatat permintaan. Anda dapat menggunakan ID titik akhir untuk mengaudit penggunaan VPC endpoint AWS KMS.

Namun, CloudTrail log Anda tidak menyertakan operasi yang diminta oleh prinsipal di akun lain atau permintaan AWS KMS operasi pada kunci KMS dan alias di akun lain. Juga, untuk melindungi VPC Anda, permintaan yang ditolak oleh kebijakan VPC endpoint, tetapi sebaliknya akan diizinkan, tidak dicatat dalam AWS CloudTrail.

Misalnya, entri log contoh ini mencatat GenerateDataKeypermintaan yang menggunakan titik akhir VPC. Bidang vpcEndpointId muncul di akhir entri log.

{ "eventVersion":"1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accessKeyId": "EXAMPLE_KEY_ID", "accountId": "111122223333", "userName": "Alice" }, "eventTime":"2018-01-16T05:46:57Z", "eventSource":"kms.amazonaws.com", "eventName":"GenerateDataKey", "awsRegion":"eu-west-1", "sourceIPAddress":"172.01.01.001", "userAgent":"aws-cli/1.14.23 Python/2.7.12 Linux/4.9.75-25.55.amzn1.x86_64 botocore/1.8.27", "requestParameters":{ "keyId":"1234abcd-12ab-34cd-56ef-1234567890ab", "numberOfBytes":128 }, "responseElements":null, "requestID":"a9fff0bf-fa80-11e7-a13c-afcabff2f04c", "eventID":"77274901-88bc-4e3f-9bb6-acf1c16f6a7c", "readOnly":true, "resources":[{ "ARN":"arn:aws:kms:eu-west-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId":"111122223333", "type":"AWS::KMS::Key" }], "eventType":"AwsApiCall", "recipientAccountId":"111122223333", "vpcEndpointId": "vpce-1234abcdf5678c90a" }