Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Enkripsi diam
penting
Enkripsi sisi server dua lapis dengan ( AWS KMS DSSE-KMS) hanya tersedia di AWS GovCloud (US) Wilayah.
Amazon ECR menyimpan citra di bucket Amazon S3 yang dikelola Amazon ECR. Secara default, Amazon ECR menggunakan enkripsi server-side dengan kunci enkripsi terkelola Amazon S3 yang mengenkripsi data Anda saat tidak aktif menggunakan algoritme enkripsi AES-256. Ini tidak memerlukan tindakan apa pun dari bagian Anda dan ditawarkan tanpa biaya tambahan. Untuk informasi selengkapnya, lihat Melindungi Data Menggunakan Enkripsi Sisi Server dengan Kunci Enkripsi Terkelola Amazon S3 (SSE-S3) di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.
Untuk kontrol lebih lanjut atas enkripsi untuk repositori Amazon ECR Anda, Anda dapat menggunakan enkripsi sisi server dengan kunci KMS yang disimpan di (). AWS Key Management Service AWS KMS Saat Anda menggunakan AWS KMS untuk mengenkripsi data, Anda dapat menggunakan default Kunci yang dikelola AWS, yang dikelola oleh Amazon ECR, atau menentukan kunci KMS Anda sendiri (disebut sebagai kunci yang dikelola pelanggan). Untuk informasi selengkapnya, lihat Melindungi Data Menggunakan Enkripsi Sisi Server dengan kunci KMS yang Disimpan di AWS KMS (SSE-KMS) di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.
Anda dapat memilih untuk menerapkan dua lapisan enkripsi ke gambar Amazon ECR Anda menggunakan enkripsi sisi server dua lapis dengan ( AWS KMS DSSE-KMS). DSSE-KMS opsi mirip dengan SSE-KMS, tetapi menerapkan dua lapisan enkripsi individu, bukan satu lapisan. Untuk informasi selengkapnya, lihat Menggunakan enkripsi sisi server dua lapis dengan AWS KMS kunci (DSSE-KMS).
Setiap repositori Amazon ECR memiliki konfigurasi enkripsi, yang diatur saat repositori tersebut dibuat. Anda dapat menggunakan konfigurasi enkripsi yang berbeda pada setiap repositori. Untuk informasi selengkapnya, lihat Membuat repositori ECR pribadi Amazon untuk menyimpan gambar.
Ketika repositori dibuat dengan AWS KMS enkripsi diaktifkan, kunci KMS digunakan untuk mengenkripsi isi repositori. Selain itu, Amazon ECR menambahkan AWS KMS hibah ke kunci KMS dengan repositori Amazon ECR sebagai pokok penerima hibah.
Berikut ini memberikan pemahaman tingkat tinggi tentang bagaimana Amazon ECR terintegrasi dengan AWS KMS untuk mengenkripsi dan mendekripsi repositori Anda:
-
Saat membuat repositori, Amazon ECR mengirimkan DescribeKeypanggilan AWS KMS untuk memvalidasi dan mengambil Nama Sumber Daya Amazon (ARN) dari kunci KMS yang ditentukan dalam konfigurasi enkripsi.
-
Amazon ECR mengirimkan dua CreateGrantpermintaan AWS KMS untuk membuat hibah pada kunci KMS untuk memungkinkan Amazon ECR mengenkripsi dan mendekripsi data menggunakan kunci data.
-
Saat mendorong gambar, GenerateDataKeypermintaan dibuat untuk AWS KMS yang menentukan kunci KMS yang akan digunakan untuk mengenkripsi lapisan gambar dan manifes.
-
AWS KMS menghasilkan kunci data baru, mengenkripsi di bawah kunci KMS yang ditentukan, dan mengirimkan kunci data terenkripsi untuk disimpan dengan metadata lapisan gambar dan manifes gambar.
-
Saat menarik gambar, permintaan Dekripsi dibuat untuk AWS KMS, menentukan kunci data terenkripsi.
-
AWS KMS mendekripsi kunci data terenkripsi dan mengirimkan kunci data yang didekripsi ke Amazon S3.
-
Kunci data digunakan untuk mendekripsi layer gambar sebelum layer gambar ditarik.
-
Ketika repositori dihapus, Amazon ECR mengirimkan dua RetireGrantpermintaan untuk menghentikan hibah yang AWS KMS dibuat untuk repositori.
Pertimbangan
Poin-poin berikut harus dipertimbangkan saat menggunakan enkripsi AWS KMS berbasis (SSE-KMS atau DSSE-KMS) dengan Amazon ECR.
-
Jika Anda membuat repositori Amazon ECR Anda dengan enkripsi KMS dan Anda tidak menentukan kunci KMS, Amazon ECR menggunakan Kunci yang dikelola AWS dengan alias secara default.
aws/ecr
Kunci KMS ini dibuat di akun Anda saat pertama kali Anda membuat repositori dengan enkripsi KMS yang diaktifkan. -
Konfigurasi Enkripsi Repositori tidak dapat diubah setelah repositori dibuat.
-
Saat Anda menggunakan enkripsi KMS dengan kunci KMS Anda sendiri, kunci harus ada di wilayah yang sama sebagai repositori Anda.
-
Bantuan yang dibuat Amazon ECR atas nama Anda tidak harus dicabut. Jika Anda mencabut hibah yang memberikan izin Amazon ECR untuk menggunakan AWS KMS kunci di akun Anda, Amazon ECR tidak dapat mengakses data ini, mengenkripsi gambar baru yang didorong ke repositori, atau mendekripsi ketika ditarik. Ketika Anda mencabut bantuan untuk Amazon ECR, perubahan terjadi segera. Untuk mencabut hak akses, Anda harus menghapus repositori bukan mencabut bantuan. Ketika repositori dihapus, Amazon ECR mempensiunkan (retire) bantuan atas nama Anda.
-
Ada biaya yang terkait dengan penggunaan AWS KMS kunci. Untuk informasi selengkapnya, lihat harga AWS Key Management Service
. -
Ada biaya yang terkait dengan penggunaan enkripsi sisi server dual-layer. Untuk informasi lebih lanjut, lihat harga Amazon
ECR
Izin IAM yang Diperlukan
Saat membuat atau menghapus repositori Amazon ECR dengan enkripsi server-side menggunakan AWS KMS, izin yang diperlukan tergantung pada kunci KMS tertentu yang Anda gunakan.
Izin IAM yang diperlukan saat menggunakan untuk Kunci yang dikelola AWS Amazon ECR
Secara default, ketika AWS KMS enkripsi diaktifkan untuk repositori Amazon ECR tetapi tidak ada kunci KMS yang ditentukan, ECR untuk Kunci yang dikelola AWS Amazon digunakan. Ketika kunci KMS AWS-managed untuk Amazon ECR digunakan untuk mengenkripsi repositori, setiap prinsipal yang memiliki izin untuk membuat repositori juga dapat mengaktifkan enkripsi pada repositori. AWS KMS Namun, IAM principal yang menghapus repositori harus memiliki izin kms:RetireGrant
. Hal ini memungkinkan pensiun dari hibah yang ditambahkan ke AWS KMS kunci ketika repositori dibuat.
Contoh kebijakan IAM berikut dapat ditambahkan sebagai kebijakan inline untuk pengguna guna memastikan bahwa mereka memiliki izin minimum yang diperlukan untuk menghapus repositori yang memiliki enkripsi yang diaktifkan. Kunci KMS yang digunakan untuk mengenkripsi repositori dapat ditentukan menggunakan parameter sumber daya.
{ "Version": "2012-10-17", "Id": "ecr-kms-permissions", "Statement": [ { "Sid": "AllowAccessToRetireTheGrantsAssociatedWithTheKey", "Effect": "Allow", "Action": [ "kms:RetireGrant" ], "Resource": "arn:aws:kms:
us-west-2
:111122223333
:key/b8d9ae76-080c-4043-92EXAMPLE
" } ] }
Izin IAM yang diperlukan saat menggunakan kunci terkelola pelanggan
Saat membuat repositori dengan AWS KMS enkripsi yang diaktifkan menggunakan kunci yang dikelola pelanggan, ada izin yang diperlukan untuk kebijakan kunci KMS dan kebijakan IAM untuk pengguna atau peran yang membuat repositori.
Saat membuat kunci KMS Anda sendiri, Anda dapat menggunakan kebijakan kunci default AWS KMS membuatnya atau Anda dapat menentukan sendiri. Untuk memastikan bahwa kunci yang dikelola pelanggan tetap dapat dikelola oleh pemilik akun, kebijakan kunci untuk kunci KMS harus memungkinkan semua AWS KMS tindakan untuk pengguna root akun. Izin cakupan tambahan dapat ditambahkan ke kebijakan kunci tetapi pengguna root paling tidak harus diberikan izin untuk mengelola kunci KMS. Untuk mengizinkan kunci KMS digunakan hanya untuk permintaan yang berasal dari Amazon ECR, Anda dapat menggunakan kunci ViaService kondisi kms: dengan nilainya. ecr.
<region>
.amazonaws.com
Contoh kebijakan kunci berikut memberikan AWS akun (pengguna root) yang memiliki kunci KMS akses penuh ke kunci KMS. Untuk informasi selengkapnya tentang kebijakan kunci contoh ini, lihat Mengizinkan akses ke AWS akun dan mengaktifkan kebijakan IAM di Panduan AWS Key Management Service Pengembang.
{ "Version": "2012-10-17", "Id": "ecr-key-policy", "Statement": [ { "Sid": "EnableIAMUserPermissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:root" }, "Action": "kms:*", "Resource": "*" } ] }
Pengguna IAM, peran IAM, atau AWS akun yang membuat repositori Anda harus memilikikms:CreateGrant
,kms:RetireGrant
, dan kms:DescribeKey
izin selain izin Amazon ECR yang diperlukan.
catatan
Izin kms:RetireGrant
harus ditambahkan ke kebijakan IAM untuk pengguna atau peran yang membuat repositori. Izin kms:CreateGrant
dan kms:DescribeKey
dapat ditambahkan ke kebijakan kunci untuk kunci KMS atau kebijakan IAM untuk pengguna atau peran yang membuat repositori. Untuk informasi selengkapnya tentang cara kerja AWS KMS izin, lihat Izin AWS KMS
API: Referensi tindakan dan sumber daya di Panduan AWS Key Management Service Pengembang.
Contoh kebijakan IAM berikut dapat ditambahkan sebagai kebijakan inline untuk pengguna guna memastikan bahwa mereka memiliki izin minimum yang diperlukan untuk membuat repositori dengan enkripsi yang diaktifkan dan menghapus repositori ketika mereka selesai. Yang AWS KMS key digunakan untuk mengenkripsi repositori dapat ditentukan menggunakan parameter sumber daya.
{ "Version": "2012-10-17", "Id": "ecr-kms-permissions", "Statement": [ { "Sid": "AllowAccessToCreateAndRetireTheGrantsAssociatedWithTheKeyAsWellAsDescribeTheKey", "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:RetireGrant", "kms:DescribeKey" ], "Resource": "arn:aws:kms:
us-west-2
:111122223333
:key/b8d9ae76-080c-4043-92EXAMPLE
" } ] }
Izinkan pengguna mencantumkan kunci KMS di konsol saat membuat repositori
Bila menggunakan konsol Amazon ECR untuk membuat repositori, Anda dapat memberikan izin untuk mengizinkan pengguna memasukkan kunci KMS yang dikelola pelanggan di Wilayah saat mengaktifkan enkripsi untuk repositori. Contoh kebijakan IAM berikut menunjukkan izin yang diperlukan untuk memasukkan kunci KMS dan alias saat menggunakan konsol.
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:ListKeys", "kms:ListAliases", "kms:DescribeKey" ], "Resource": "*" } }
Pemantauan Interaksi Amazon ECR dengan AWS KMS
Anda dapat menggunakan AWS CloudTrail untuk melacak permintaan yang dikirimkan Amazon ECR atas nama Anda. AWS KMS Entri log di CloudTrail log berisi kunci konteks enkripsi untuk membuatnya lebih mudah diidentifikasi.
Konteks enkripsi Amazon ECR
Konteks enkripsi adalah seperangkat pasangan nilai kunci yang berisi data non-rahasia yang berubah-ubah. Ketika Anda menyertakan konteks enkripsi dalam permintaan untuk mengenkripsi data, secara AWS KMS kriptografis mengikat konteks enkripsi ke data terenkripsi. Untuk mendekripsi data, Anda harus meneruskan konteks enkripsi yang sama.
Dalam permintaannya GenerateDataKeydan Dekripsi ke, AWS KMS Amazon ECR menggunakan konteks enkripsi dengan dua pasangan nama-nilai yang mengidentifikasi repositori dan bucket Amazon S3 yang digunakan. Ini seperti yang ditunjukkan dalam contoh berikut. Nama-nama tidak bervariasi, tetapi nilai-nilai konteks enkripsi gabungan akan berbeda untuk setiap nilai.
"encryptionContext": { "aws:s3:arn": "arn:aws:s3:::
us-west-2
-starport-manifest-bucket/EXAMPLE1-90ab-cdef-fedc-ba987BUCKET1
/sha256:a7766145a775d39e53a713c75b6fd6d318740e70327aaa3ed5d09e0ef33fc3df", "aws:ecr:arn": "arn:aws:ecr:us-west-2
:111122223333
:repository/repository-name
" }
Anda dapat menggunakan konteks enkripsi untuk mengidentifikasi operasi kriptografi ini dalam catatan audit dan log, seperti AWS CloudTraildan Amazon CloudWatch Logs, dan sebagai syarat untuk otorisasi dalam kebijakan dan hibah.
Enkripsi konteks Amazon ECR terdiri dari dua pasangan nama-nilai.
-
aws:s3:arn – Pasangan nama-nilai pertama mengidentifikasi bucket. Kuncinya adalah
aws:s3:arn
. Nilai tersebut adalah Amazon Resource Name (ARN) dari bucket Amazon S3."aws:s3:arn": "
ARN of an Amazon S3 bucket
"Sebagai contoh, jika ARN bucket adalah
arn:aws:s3:::
, mkaa konteks enkripsi akan mencakup pasangan berikut.us-west-2
-starport-manifest-bucket/EXAMPLE1-90ab-cdef-fedc-ba987BUCKET1
/sha256:a7766145a775d39e53a713c75b6fd6d318740e70327aaa3ed5d09e0ef33fc3df"arn:aws:s3:::
us-west-2
-starport-manifest-bucket/EXAMPLE1-90ab-cdef-fedc-ba987BUCKET1
/sha256:a7766145a775d39e53a713c75b6fd6d318740e70327aaa3ed5d09e0ef33fc3df" -
aws:ecr:arn – Pasangan nama-nilai kedua mengidentifikasi Amazon Resource Name (ARN) dari repositori. Kuncinya adalah
aws:ecr:arn
. Nilai tersebut merupakan ARN dari repositori."aws:ecr:arn": "
ARN of an Amazon ECR repository
"Misalnya, jika ARN repositori adalah
arn:aws:ecr:
, maka konteks enkripsi akan mencakup pasangan berikut.us-west-2
:111122223333
:repository/repository-name
"aws:ecr:arn": "arn:aws:ecr:
us-west-2
:111122223333
:repository/repository-name
"
Pemecahan Masalah
Ketika menghapus repositori Amazon ECR dengan konsol, jika repositori berhasil dihapus tetapi Amazon ECR tidak dapat mempensiunkan (retire) bantuan yang ditambahkan ke kunci KMS Anda untuk repositori Anda, maka Anda akan menerima pesan kesalahan berikut.
The repository
[{repository-name}]
has been deleted successfully but the grants created by the kmsKey[{kms_key}]
failed to be retired
Ketika ini terjadi, Anda dapat mempensiunkan AWS KMS hibah untuk repositori sendiri.
Untuk pensiun AWS KMS hibah untuk repositori secara manual
-
Buat daftar hibah untuk AWS KMS kunci yang digunakan untuk repositori. Nilai
key-id
termasuk dalam pesan kesalahan yang Anda terima dari konsol. Anda juga dapat menggunakanlist-keys
perintah untuk mencantumkan kunci KMS Kunci yang dikelola AWS dan yang dikelola pelanggan di Wilayah tertentu di akun Anda.aws kms list-grants \ --key-id
b8d9ae76-080c-4043-9237-c815bfc21dfc
--regionus-west-2
Outputnya termasuk
EncryptionContextSubset
dengan Amazon Resource Name (ARN) dari repositori Anda. Ini dapat digunakan untuk menentukan bantuan yang ditambahkan ke kunci mana yang ingin Anda pensiunkan (retire). NilaiGrantId
akan digunakan saat mempensiunkan (retire) bantuan pada langkah berikutnya. -
Pensiun setiap hibah untuk AWS KMS kunci yang ditambahkan untuk repositori. Ganti nilai untuk
GrantId
dengan ID hibah dari output dari langkah sebelumnya.aws kms retire-grant \ --key-id
b8d9ae76-080c-4043-9237-c815bfc21dfc
\ --grant-idGrantId
\ --regionus-west-2