Isi semula Amazon Cloud: Cara menggunakan AWS ECR (Fleksibel Container Mirror) untuk menguruskan cermin Docker anda dengan selamat
Hari ini, ketika seni bina awan asli dan perkhidmatan mikro buruk, cermin Docker telah lama menjadi kontena standard untuk penghantaran kod.
Ketika banyak pasukan mula-mula mula terlibat dalam kontena, untuk menyelamatkan masalah, mereka secara langsung melemparkan cermin dalaman syarikat ke Hub Docker awam, atau membina Daftar Sumber Terbuka yang sangat sederhana di pelayan. Hasilnya adalah kebocoran kod komersial teras kerana kekurangan kuasa gudang awam, atau kerana kekurangan penyelenggaraan gudang yang dibina sendiri, ia secara langsung tersekat dan runtuh ketika menghadapi aliran aliran serentak yang tinggi, dan bahkan imbasan kerentanan cermin tidak dapat dilakukan.
Dalam ekologi AWS (Amazon Cloud Technology), ia secara khusus digunakan untuk mencerminkan dan menguruskan pekerjaan kotor ini, yang disebut
Amazon ECR (Registry Kontainer Elastic)
。 Ia bukan sahaja secara semula jadi membuka sistem kebenaran keselamatan AWS (IAM), tetapi juga mempunyai kemampuan pengimbasan kerentanan peringkat pengeluar utama dan kemampuan replikasi global.
Hari ini kita tidak bercakap omong kosong, langsung dari pertempuran sebenar, dan mengajar anda cara menggunakan peraturan keselamatan pengeluar utama untuk mengimpal kedudukan pertahanan cermin kontena peribadi yang tidak dapat dihancurkan pada AWS ECR.
Peringkat pertama: memahami konsep teras peringkat perusahaan ECR
Sebelum anda mendorong aliran (Push), anda mesti mengetahui asas rangkaian ECR. Jangan memukul seperti lalat tanpa kepala, struktur ECR sangat jelas, terutamanya terdiri daripada tiga tahap teras berikut:
Registry: Ini adalah asas anda. Setiap akaun AWS mempunyai satu pendaftaran peribadi lalai di setiap wilayah (Wilayah). Nama domain lawatannya biasanya berbentuk seperti 123456789012.dkr.ecr.us-east-1.amazonaws.com (nombor sebelumnya adalah ID akaun AWS anda).
Repository: Ini adalah "gudang cermin" khusus. Sebagai contoh, jika aplikasi anda dipanggil perkhidmatan pengguna, anda harus membina repositori yang disebut perkhidmatan pengguna di bawah borang pendaftaran, yang mengandungi semua versi gambar perkhidmatan dari v1.0 hingga v2.5.
Strategi IAM dan Pengurusan Kitaran Hidup: Ini adalah penjaga pintu keselamatan dan pembersih. Tentukan siapa yang dapat menarik aliran, siapa yang dapat mendorong aliran, dan berapa kerap anda dapat membersihkan cermin sejarah yang telah tamat secara automatik.
Tahap kedua: latihan praktikal satu-buat repositori peribadi yang selamat
Log masuk ke akaun anda
Konsol AWS
, Cari dan masukkan
ECR
Perkhidmatan. Klik "Repositories" di menu di sebelah kiri-> Klik
"Buat repositori (Buat repositori)"
。
Konfigurasi pengelasan parameter utama (menentukan tahap keselamatan cermin anda):
Tetapan Visibility: Jangan teragak-agak untuk memilih "Swasta
) ". Kecuali anda ingin melakukan pengedaran sumber terbuka, cermin dalaman syarikat tidak boleh didedahkan.
Tag tidak dapat diubah: Sangat disarankan untuk menghidupkan "Immutable". Sejarah pengeluar utama yang mengelakkan darah dan air mata: Sekiranya anda mengekalkan "Mutable" lalai, penguji akan meletakkan gambar cermin dengan pepijat di bawah label, dan versi stabil dari garis sebelumnya akan ditimpa. Setelah menghidupkan tidak berubah, setelah v1.0 menempati lubang, tidak ada yang mahu menutupnya dengan label dengan nama yang sama. Versi hanya dapat meningkatkan nombor versi dengan jujur (seperti v1.1), dan cermin dalam talian secara tidak sengaja diubah dari sumbernya. Tragedi.
Sapu pada konfigurasi: Hidupkan dengan tegas. Setelah dihidupkan, setiap kali anda mendorong pencerminan ke ECR, latar belakang AWS secara automatik akan memanggil perpustakaan kerentanan pihak berkuasa sumber terbuka (atau Inspektor Amazon yang maju) untuk mengimbas komponen sistem operasi dalam cermin anda secara mendalam, sama ada terdapat kerentanan keselamatan serius (CVE) yang diketahui, dan Beri anda amaran lampu merah dan kuning di konsol.
Tahap ketiga: latihan pertempuran sebenar 2-Local Docker membuka aliran ECR sepenuhnya
Gudang dibina (dengan andaian namanya
My-app
), Bagaimana kita menghantar gambar Docker yang dibungkus pada komputer tempatan ke awan dengan selamat?
Ramai orang akan menghadapi lubang besar pertama di sini: pelaksanaan langsung
Login docker
Masukkan kata laluan akaun AWS, dan hasilnya meminta untuk menolak masuk. Kerana
ECR sama sekali tidak mengenali kata laluan AWS biasa anda, ia menggunakan token yang dihasilkan secara dinamik (Token)
。
Pastikan komputer tempatan anda dikonfigurasi
AWS CLI (alat baris arahan)
Dan mempunyai kebenaran IAM yang sah. Buka terminal dan lulus tiga langkah:
Langkah 1: Dapatkan token log masuk dinamik dan suntikan ke dalam enjin Docker
Jalankan perintah kompaun berikut (ganti ID akaun dan wilayah anda sendiri):
Bash
Aws ecr get-login-kata laluan-region us-east-1 | login-username AWS-password-stdi n 123456789012.dkr.ecr.us-east-1.amazonaws.com
Sekiranya skrin muncul
Login Succeeded
, Yang bermaksud bahawa Docker tempatan anda telah memperoleh pas keselamatan sehingga 12 jam dan berjaya memadankan kod rahsia dengan awan.
Langkah 2: Beri "tatu" cermin tempatan (tag)
Katakan anda mempunyai gambar yang baru disusun yang dipanggil
Tempatan-app:v1.0
。 Anda harus memberikan nama awan standard baru sesuai dengan spesifikasi ECR, jika tidak, Docker tidak akan menjumpainya
Jalan:
Bash
Local-app:v1.0 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-app:v1.0
Langkah 3: Tolak aliran sepenuhnya
Bash
H 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-app pus docker: v1.0
Diiringi oleh yang biasa
Pushed
Bar kemajuan, gambar cermin anda telah melintasi rangkaian dan terus berbaring di kedalaman penyimpanan keselamatan AWS yang diedarkan.
Tahap keempat: permainan lanjutan peringkat perusahaan-menguruskan gudang dengan anggaran paling sedikit dan keselamatan tertinggi
Mendorong cermin ke atas hanyalah langkah pertama. Dalam persekitaran pengeluaran sebenar, arkitek operasi dan penyelenggaraan biasanya menambah dua garis pertahanan:
1. Sewa pembersih percuma: Dasar Kitaran Hidup
Pasukan pengembangan sering membina gambar cermin setiap hari, dan setiap kali versi dikeluarkan, beberapa GB gambar sejarah akan dihasilkan. Sekiranya tidak ada batasan, gambar cermin di ECR menumpuk seperti gunung, dan bil simpanan AWS pada akhir bulan dapat membuat anda sakit.
Konfigurasi rehat: Di halaman butiran repositori ECR, klik "polisi kitaran hidup"-> buat peraturan.
Logik peraturan: Buat peraturan "membersihkan cermin ketinggalan zaman". Contohnya: "Untuk pencerminan sementara yang tidak ditandai dengan label versi tertentu (Untagged), ia akan dimusnahkan secara automatik dan fizikal selama lebih dari 14 hari"; atau "Hanya 30 versi pencerminan terbaru yang disimpan, dan yang lama akan dipadamkan secara automatik."
Biarkan sistem membantu anda berpisah secara automatik, yang dapat membantu aset awan syarikat menjimatkan banyak perbelanjaan penyimpanan.
2. Replikasi Automatik Merentas Wilayah (Replikasi Wilayah)
Sekiranya perniagaan anda diedarkan secara global (sebagai contoh, Tokyo dan Virginia mempunyai kelompok kontena EKS yang berjalan). Sekiranya kluster Tokyo melintasi lautan ke ECR Amerika Syarikat setiap kali untuk menarik beberapa gigabait cermin besar, kelewatan rangkaian dan caj lalu lintas antara wilayah akan cukup tinggi untuk membuat anda terhempas.
Operasi pesanan tinggi: Dalam tetapan pendaftaran ECR, hidupkan "Replikasi Merentas Wilayah".
Orang dalam yang mendasari: Anda boleh mengkonfigurasinya sebagai: Selagi saya mendorong cermin ke gudang us-timur-1 di Amerika Syarikat, rangkaian tulang belakang bawah AWS secara automatik akan menyegerakkan cermin ke gudang dengan nama yang sama di ap-northeast-1 Tokyo dengan kelajuan yang sangat cepat di latar belakang. Kluster di kedua-dua belah pihak masing-masing "menarik lalu lintas" di ruang komputer yang dilokalkan, dan kelajuannya meningkat sepuluh kali ganda, dan caj lalu lintas transnasional rangkaian awam yang mahal juga dihapuskan.
Peringkat kelima: Sejarah pahit dan pengalaman berharga mengelakkan kesilapan dalam operasi dan penyelenggaraan harian
Kesalahan kebenaran aliran ECS / EKS (ImagePullBackOff): Semasa anda menggunakan perkhidmatan kontena AWS sendiri (seperti ECS atau EKS
Semasa menggunakan aplikasi di), anda sering menghadapi ralat bahawa nod tidak dapat menarik gambar ECR. 99% alasannya adalah kerana anda tidak memberikan kebenaran IAM kepada ECS Task Role atau EKS Node Role. Ingat, walaupun di dalam AWS, lalai antara perkhidmatan adalah tembok tinggi dan tidak saling berkaitan, dan mesti diberi kuasa secara eksplisit.
Pilihan penyulitan kunci KMS: ECR akan melakukan penyimpanan enkripsi end-to-end pada gambar anda secara lalai. Jika anda mempunyai keperluan yang sangat tinggi untuk pematuhan, anda boleh beralih ke penyulitan kunci AWS KMS (CMK) tersuai. Tetapi harus diingat bahawa jika kunci khusus digunakan, ketika akaun atau perkhidmatan lain menarik gambar di seluruh pasukan, bukan sahaja izin ECR harus dibuka, tetapi juga izin penyahsulitan kunci KMS harus dibuka, jika tidak, aliran masih akan gagal.
Ringkasan
Pada era awan, gudang cermin adalah gudang senjata anda. Dengan menggunakan AWS ECR untuk menguruskan cermin Docker, rahsia utamanya terletak pada tiga perkara:
Gunakan Immutable untuk menjaga garis bawah versi, gunakan Dasar Kitaran Hidup untuk mengetatkan tali pinggang dan menjimatkan wang, dan akhirnya gunakan strategi IAM dan repositori untuk menyekat akses.
Kimpalan set spesifikasi ini ke dalam barisan pemasangan automatik CI/CD anda. Sejak itu, tidak kira bagaimana perniagaan anda berkembang atau bagaimana anda melemparkan di seluruh dunia, aset kod belakang anda akan stabil seperti batu.
