Apa yang perlu saya lakukan sekiranya Alibaba Cloud AccessKey bocor? Ajar anda cara mengatur konfigurasi kebenaran peranan RAM
Banyak pasukan teknikal telah mengalami "seram tengah malam" seperti itu: tiba-tiba menerima panggilan bersiri atau pemberitahuan SMS dari Alibaba Cloud, "Akaun anda mengesan risiko kebocoran AccessKey, dan beberapa sumber dipanggil oleh frekuensi tinggi yang tidak normal..."
Semasa saya log masuk ke konsol, bil telah meletup, dan pelayan bahkan dibuat oleh penggodam untuk menambang.
Punca semua ini sering disebabkan oleh peta yang menyelamatkan masalah, secara langsung dalam kod, fail konfigurasi atau gudang terbuka GitHub, pengekodan keras dengan kuasa tertinggi
Akaun utama AccessKey(AK/SK)
。 AK akaun utama adalah seperti kunci induk rumah anda. Setelah bocor, keseluruhan aset di awan sama dengan terbuka sepenuhnya untuk penggodam.
Hari ini, tidak ada teori fiksyen, tidak ada omong kosong. Bawa anda secara langsung untuk membina dua barisan pertahanan:
Pertama, AK akan menghentikan pendarahan dalam masa 5 minit selepas kebocoran; kedua, bagaimana menggunakan watak RAM (Role) untuk membasmi sepenuhnya bahaya tersembunyi AK berkod keras.
Peringkat pertama: Hemostasis kecemasan! Aliran kecemasan 5 minit yang dibocorkan oleh AccessKey
Sekiranya anda mendapati atau mengesyaki bahawa AK telah bocor, jangan ragu untuk melakukan operasi berikut dengan segera. Satu minit tambahan akan menjadi kehilangan wang sebenar.
Langkah 1: Lumpuhkan atau hapus AK yang terlibat di seluruh rangkaian
Log masuk ke konsol Cloud Alibaba dengan segera, klik pada avatar $ \ rightdarrow $ di sudut kanan atas untuk memilih "Pengurusan Kunci Access".
Cari AccessKey (sama ada akaun utama atau sub-akaun) yang diminta untuk bocor.
Klik "Lumpuhkan" terlebih dahulu. Pada masa ini, semua permintaan rangkaian luaran yang menggunakan AK akan melaporkan ralat 403 dengan serta-merta.
Setelah mengesahkan bahawa ia tidak mempengaruhi perniagaan pengeluaran teras, klik "Padam" dengan tegas.
Langkah 2: Periksa "pintu belakang" yang ditinggalkan oleh penggodam
Setelah penggodam mendapat AK, perkara pertama adalah menggunakan skrip automatik untuk membuat sumber secara berkumpulan.
Pergi ke senarai contoh ECS, senarai pelayan aplikasi ringan, beralih ke pelbagai wilayah (Beijing, Shanghai, Shenzhen, Hong Kong, Amerika Syarikat, dll.) Untuk melihat apakah ada pelayan tambahan yang tidak dapat dijelaskan. Sekiranya ada, lepaskan sepenuhnya dengan segera.
Pergi untuk mengendalikan konsol Audit (ActionTrail), periksa API mana yang dipanggil AK dalam 24 jam terakhir, dan cari sumber yang telah digunakan oleh penggodam.
Tahap kedua: penyelesaian asas-konfigurasi standard peranan RAM dan kebenaran minimum
Dengan penghapusan AK, kod projek lama runtuh kerana mereka memerlukan kebenaran untuk membaca dan menulis OSS atau memanggil perkhidmatan awan lain.
Kami tidak dapat membuat akaun induk baru, AK, dan memasukkannya. Cara yang betul ialah:
Dengan menggunakan RAM Role, program yang berjalan di Alibaba Cloud dapat memperoleh izin sementara secara automatik dan tanpa kunci.
Di bawah ini kami mengambil "membolehkan program di ECS pelayan awan dapat membaca dan menulis baldi OSS dengan selamat" sebagai contoh untuk konfigurasi pertempuran sebenar.
Langkah 1: Buat watak RAM (buat "identiti" dari udara yang tipis
)
Cari di konsol dan masukkan "Kawalan Akses RAM".
Klik "Watak" $ \ rightharrow $ "Buat Watak" pada menu di sebelah kiri.
Pilih jenis entiti yang dipercayai sebagai "Alibaba Cloud Services" dan klik Seterusnya.
Jenis Peranan: Pilih "Peranan Perkhidmatan Biasa".
Nama watak: Buat nama yang mudah difahami, seperti ECS-OSS-Reader-Role.
Pilih perkhidmatan yang dipercayai: Oleh kerana kami ingin menyiarkan peranan ini pada pelayan awan, kami memilih "Cloud Server" (ECS) di sini.
Klik OK.
Langkah 2: Kebenaran tepat (tidak memberikan kebenaran tambahan)
Watak yang baru dicipta adalah sekeping kertas kosong tanpa sebarang kebenaran. Kita perlu mengeluarkan lesen sesuai dengan "prinsip kebenaran minimum".
Cari ECS-OSS-Reader-Role yang baru dibuat dalam senarai watak, dan klik "Tambah Kebenaran" di sebelah kanan.
Skop kebenaran: pilih keseluruhan akaun Alibaba Cloud (lalai).
Pilih Strategi: Jika anda hanya perlu membaca OSS: Cari dan tandakan AliyunOSSReadOnlyAccess (akses baca sahaja OSS). Sekiranya anda perlu membaca dan menulis OSS: Cari dan tandakan AliyunOSSFullAccess (menguruskan OSS).
Klik OK.
Langkah 3: Mengikat Peranan ke Pelayan Awan ECS
Langkah ini sangat kritikal. Ia sama dengan menyiarkan "lesen" ini di dahi pelayan tertentu.
Masukkan konsol "Cloud Server ECS" dan cari contoh yang menjalankan kod anda.
Klik "Lagi" $ \ rightharrow $ "Tetapan Contoh" $ \ rightharrow $ "untuk memberi/menarik balik peranan RAM" di sebelah kanan.
Dalam menu drop-down, pilih ECS-OSS-Reader-Role yang baru anda buat.
Klik OK.
Tahap ketiga: transformasi kod-mengucapkan selamat tinggal kepada pengekodan keras AK
Kini pelayan anda mempunyai identiti yang sah. Kami akan mengubah kod projek dan meletakkan baris-baris itu
AccessKeyId
Dan
AccessKeySecret
Padamkan sepenuhnya.
SDK Alibaba Cloud mempunyai
Suntikan putaran sijil automatik
Fungsi. Apabila kod tersebut berjalan pada ECS yang mengikat peranan RAM, SDK akan mengakses alamat metadata tempatan khas di dalam pelayan
http
: // 100.100.100.200/latest/meta-data/
Dapatkan satu secara automatik
Token sementara yang diganti secara automatik tamat setiap beberapa jam
。
Walaupun penggodam menyelinap ke pelayan dan mencuri Token, ia akan menjadi tidak sah secara automatik setelah beberapa jam dan tidak dapat digunakan sebagai pintu belakang yang tahan lama.
Ambil akses SDK Java ke OSS sebagai contoh:
Kod lama (sangat berbahaya❌):
Java
// Dilarang menulis seperti ini! Sebaik sahaja kod
Lulus ke platform hosting kod awam, baldi keluarga naik ke syurga dengan serta-merta
String accessKeyId = "LTAI5tXXXXXX";
String accessKeySecret = "Pn7yXXXXXX";
OSS ossClient = baru OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
Kod baru (disyorkan untuk strategi keselamatan asli awan):
Java
Import com.aliyun.oss.OSS;
Import com.aliyun.oss.OSSClientBuilder;
Import com.aliyun.credentials.Client;
Import com.aliyun.credentials.mo dels.Config;
// Tidak perlu ada kunci teks biasa sama sekali!
Config credentialConfig = baru Config();
CredentialConfig. setType("ecs_ram_roll"); // Tentukan peranan RAM yang jenis baucar adalah ECS terikat
// Jika dibiarkan kosong, SDK secara automatik akan mencari nama watak yang terikat pada pelayan semasa
// CredentialConfig. setRoleName("ECS-OSS-Reader-Role");
Client credentialClient = baru Client(credentialConfig);
// Membina pelanggan OSS menggunakan sijil sementara
OSS ossClient = baru OSSClientBuilder().build(endpoint, credentialClient);
Garis pertahanan utama: bagaimana menghentikan kebocoran seterusnya?
Benar-benar, benar-benar, benar-benar tidak boleh menghantar fail konfigurasi yang mengandungi AK teks biasa di mana-mana pangkalan kod awam (seperti GitHub, Gitee). Walaupun gudang persendirian tidak berfungsi, banyak kebocoran adalah kerana pekerja secara keliru menukar gudang persendirian menjadi umum.
Gunakan dengan baik. Gitignore. Semasa memulakan projek, segera tambahkan fail konfigurasi yang mengandungi maklumat sensitif seperti application-prod.yml, config.json ke senarai pengabaian.
Bagaimana dengan pembangunan tempatan? Sekiranya komputer tempatan benar-benar memerlukan AK untuk melakukan debug, konfigurasikan AK ke pemboleh ubah persekitaran sistem komputer anda (melalui export ALIBABA_CLOUD_ACCESS_KEY_ID = "xxx"), dalam kod
Baca melalui Sistem. getenv(). Dengan cara ini kodnya sentiasa bersih.
Keselamatan bukanlah perkara kecil. Malam ini, saya akan memeriksa projek yang anda jaga dan membunuh semua AK akaun utama yang dikodkan keras!

