0Pricing
Terraform Infrastructure as Code · Pelajaran

Pengelolaan Kredensial yang Aman

Terapkan praktik terbaik untuk mengelola kredensial penyedia cloud dan data sensitif secara aman dalam pipeline Terraform otomatis.

Pengelolaan Kredensial yang Aman adalah pelajaran Terraform Infrastructure as Code gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Terraform Infrastructure as Code, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Terraform Infrastructure as Code mencakup 4 pelajaran total.

Kredensial Aman dalam CI/CD

Saat mengotomatiskan infrastruktur dengan Terraform dalam alur CI/CD, alur Anda memerlukan akses ke akun penyedia cloud. Mengelola kredensial ini dengan aman sangat penting untuk mencegah akses tanpa izin dan kebocoran data.

Anggap saja seperti memberikan kunci rumah Anda kepada robot. Anda ingin memastikan hanya robot yang tepat yang memiliki kunci yang tepat, dan kunci tersebut terlindungi.

Hindari Menanamkan Rahasia Secara Langsung

Kesalahan umum adalah menyematkan informasi sensitif, seperti kunci API atau kata sandi, langsung ke dalam berkas konfigurasi Terraform atau skrip CI/CD. Hal ini disebut hardcoding.

  • Risiko Keamanan: Rahasia menjadi bagian dari riwayat kode sumber Anda (misalnya, Git).
  • Paparan: Siapa pun yang memiliki akses ke repositori dapat melihatnya.
  • Pemeliharaan: Mengubah rahasia memerlukan modifikasi kode dan penerapan ulang.

Variabel Lingkungan (Dasar)

Untuk pengembangan lokal atau skenario dasar, variabel lingkungan adalah cara sederhana untuk menyediakan kredensial tanpa menanamkannya secara langsung. Anda menetapkannya di shell sebelum menjalankan Terraform.

Meskipun lebih baik daripada menanamkan rahasia secara langsung, cara ini tidak ideal untuk alur CI/CD bersama karena rahasia masih dapat terlihat dalam catatan log atau daftar proses jika tidak ditangani dengan hati-hati.

export AWS_ACCESS_KEY_ID="AKIA..."
export AWS_SECRET_ACCESS_KEY="abcdef..."
terraform plan

Pengelola Rahasia Platform CI/CD

Platform CI/CD modern menyediakan fitur pengelolaan rahasia bawaan. Fitur ini memungkinkan Anda menyimpan data sensitif dengan aman di dalam platform itu sendiri, terpisah dari repositori kode.

Saat alur Anda berjalan, rahasia tersebut dimasukkan ke lingkungan build sebagai variabel lingkungan atau berkas, tetapi tidak pernah ditampilkan dalam catatan log atau disimpan di repositori Anda.

Contoh Rahasia GitHub Actions

GitHub Actions menyediakan bagian khusus untuk rahasia repositori. Anda dapat menambahkannya melalui Settings > Secrets and variables > Actions > New repository secret.

Dalam berkas alur kerja, Anda kemudian dapat merujuk rahasia ini menggunakan konteks secrets. Rahasia tersebut secara otomatis disamarkan dalam catatan log.

name: Deploy Infra
on: [push]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Configure AWS Credentials
      uses: aws-actions/configure-aws-credentials@v1
      with:
        aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
        aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        aws-region: us-east-1
    - name: Terraform Init
      run: terraform init

Peran IAM Cloud untuk Alur

Pendekatan paling aman untuk autentikasi CI/CD adalah menggunakan peran Identity and Access Management (IAM) atau akun layanan yang disediakan oleh penyedia cloud Anda.

Alih-alih menggunakan kunci akses berumur panjang, alur CI/CD Anda mengambil peran sementara dengan izin tertentu, sering kali dengan memanfaatkan OpenID Connect (OIDC) untuk hubungan kepercayaan. Dengan demikian, kebutuhan untuk menyimpan kredensial statis sepenuhnya dihilangkan.

Contoh Peran AWS IAM + OIDC

Untuk AWS, Anda dapat mengonfigurasi peran IAM yang dapat diambil langsung oleh alur kerja GitHub Actions menggunakan OIDC. Artinya, tidak ada kunci akses AWS yang disimpan di mana pun!

Anda menentukan kebijakan kepercayaan untuk peran tersebut, yang memungkinkan penyedia OIDC GitHub mengambilnya berdasarkan kondisi tertentu (misalnya, repositori atau cabang).

resource "aws_iam_role" "github_actions_role" {
  name = "github-actions-oidc-role"
  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Effect = "Allow"
        Principal = {
          Federated = "arn:aws:iam::123456789012:oidc-provider/token.actions.githubusercontent.com"
        }
        Action = "sts:AssumeRoleWithWebIdentity"
        Condition = {
          StringEquals = {
            "token.actions.githubusercontent.com:aud" : "sts.amazonaws.com"
          }
          StringLike = {
            "token.actions.githubusercontent.com:sub" : "repo:your-org/your-repo:*"
          }
        }
      }
    ]
  })
}

Output Sensitif Terraform

Terkadang, output Terraform dapat berisi data sensitif, seperti kata sandi basis data atau kunci privat. Anda harus menandai output ini sebagai sensitive.

Saat output ditandai sensitif, Terraform akan menyamarkan nilainya dalam output CLI dan berkas keadaan saat ditampilkan, sehingga membantu mencegah paparan yang tidak disengaja.

output "database_password" {
  value       = aws_db_instance.main.password
  description = "The database root password."
  sensitive   = true
}

Pemeriksaan Kredensial Aman

Metode apa yang secara umum dianggap paling aman bagi alur CI/CD untuk melakukan autentikasi dengan penyedia cloud, sekaligus menghilangkan kebutuhan untuk menyimpan kredensial statis berumur panjang?

Ringkasan: Kredensial Aman

Anda telah mempelajari strategi penting untuk mengelola data sensitif dalam alur CI/CD Terraform:

  • Hindari Hardcoding: Jangan pernah menyematkan rahasia langsung dalam kode Anda.
  • Manfaatkan Rahasia CI/CD: Gunakan pengelola rahasia khusus platform untuk kredensial statis.
  • Gunakan Peran IAM/OIDC: Untuk keamanan maksimal, gunakan peran IAM penyedia cloud dengan OIDC guna mengambil izin sementara tanpa menyimpan kunci.
  • Tandai Output Sensitif: Lindungi data sensitif yang ditampilkan oleh output Terraform.

Praktik-praktik ini sangat penting untuk menjaga infrastruktur yang tangguh dan aman.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pengelolaan Kredensial yang Aman” gratis?

Ya — teks lengkap “Pengelolaan Kredensial yang Aman” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Terraform Infrastructure as Code, upgrade ke CoddyKit PRO. Kursus Terraform Infrastructure as Code mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pengelolaan Kredensial yang Aman”?

Terapkan praktik terbaik untuk mengelola kredensial penyedia cloud dan data sensitif secara aman dalam pipeline Terraform otomatis. Kamu berlatih Terraform Infrastructure as Code dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Terraform Infrastructure as Code?

Tidak diperlukan pengalaman sebelumnya. Terraform Infrastructure as Code di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Pengelolaan Kredensial yang Aman” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Terraform Infrastructure as Code ini?

Ya. Setiap pelajaran Terraform Infrastructure as Code menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Terraform dalam Pipeline CI/CD
  2. Mengotomatiskan `plan` dan `apply`
  3. Pengelolaan Kredensial yang Aman
  4. GitOps dan Otomatisasi Pull Request
← Kembali ke Terraform Infrastructure as Code