View a markdown version of this page

AWSPenyedia Kredensial Beban Kerja - AWSCertificate Manager

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

AWSPenyedia Kredensial Beban Kerja

Penyedia Kredensial AWS Beban Kerja mengotomatiskan penggunaan sertifikat TLS publik dan swasta yang diekspor dari ACM. Penyedia secara berkala mengambil sertifikat dan kunci pribadinya, menulisnya ke jalur yang dikonfigurasi, dan secara opsional menjalankan perintah untuk memuat ulang layanan dependen seperti server web.

Anda dapat menggunakan Penyedia Kredensial Beban Kerja dengan lingkungan komputasi berikut:

  • Amazon Elastic Compute Cloud (Amazon EC2)

  • On-premises server dengan AWS kredensil

Penyedia Kredensial Beban Kerja menggunakan asumsi peran IAM untuk mengambil sertifikat. Ini berjalan secara native sebagai layanan sistem di Linux dan Windows di bawah pengguna khusus dengan hak istimewa rendah dan menulis file sertifikat dengan izin terbatas.

penting

Hanya sertifikat yang dapat diekspor yang dapat digunakan dengan penyedia ini. Untuk informasi selengkapnya, lihat AWS Certificate Manager sertifikat publik yang dapat diekspor dan Mengekspor sertifikat pribadi.

Penyedia Kredensial AWS Beban Kerja adalah open source. Untuk kode sumber dan kontribusi, lihat GitHub repositori.

Cara kerja otomatisasi sertifikat

Penyedia menggunakan penjadwal yang menyegarkan setiap sertifikat yang dikonfigurasi pada interval tetap:

  • Interval penyegaran adalah 24 jam.

  • Pada setiap siklus, penyedia mengekspor sertifikat, membandingkannya dengan file pada disk, dan menulis file baru hanya jika konten telah berubah.

  • Ketika file sertifikat diperbarui, dikonfigurasi refresh_command berjalan (misalnya, untuk memuat ulang NGINX atau Apache).

  • Jika konten sertifikat tidak berubah, perintah refresh akan dilewati.

Penyedia melakukan penyegaran awal pada setiap boot sistem dan segera setelah startup layanan, dengan jitter acak kecil untuk menghindari panggilan API yang disinkronkan ketika beberapa penyedia memulai secara bersamaan di seluruh armada.

Penyedia juga mendukung pemuatan ulang konfigurasi dinamis, memungkinkan Anda untuk menambah, menghapus, atau memodifikasi sertifikat tanpa menginstal ulang. Untuk informasi selengkapnya, lihat Muat ulang konfigurasi dinamis.

Prasyarat

Sebelum Anda menginstal penyedia, pastikan Anda memiliki yang berikut:

  • Instans Linux dengan systemd (Amazon Linux 2023, Ubuntu 20.04+, atau RHEL 8+)

  • Atau instance Windows yang menjalankan Windows Server 2016 atau yang lebih baru dengan PowerShell 5.1 atau yang lebih baru

  • Akses administrator untuk menjalankan penginstal

  • Sertifikat yang dapat diekspor dalam ACM

  • Peran IAM dengan izin ekspor ACM (lihat) Izin yang diperlukan

  • AWSkredensyal yang tersedia pada instance (profil instance, variabel lingkungan, atau file kredensyal)

Instal penyedia

Linux
  1. Bangun penyedia

    Bangun biner penyedia dari sumber, atau dapatkan biner pra-bangun untuk platform Anda. Ikuti instruksi di Install Rust untuk menginstal rantai alat Rust.

    cargo build --release

    Executable ada di. target/release/aws-workload-credentials-provider

  2. Buat file konfigurasi

    Buat file konfigurasi TOMM dengan detail sertifikat Anda. Sebagai contoh, lihat Konfigurasikan penyedia. Pemasang menyalin file ini secara /etc/aws-workload-credentials-provider/config.toml otomatis saat Anda menggunakan --config opsi.

  3. Jalankan penginstal

    Jalankan skrip instal sebagai root:

    cd aws_workload_credentials_provider_common/configuration sudo ./install --config /path/to/your/config.toml
  4. (Opsional) MenyediakanAWScredentials

    Pada instans Amazon EC2 dengan profil instans terlampir, penyedia memperoleh kredensyal secara otomatis. Untuk lingkungan lain, buat file penggantian systemd untuk menyuntikkan kredensil:

    sudo mkdir -p /etc/systemd/system/aws-workload-credentials-provider-acm.service.d sudo tee /etc/systemd/system/aws-workload-credentials-provider-acm.service.d/creds.conf > /dev/null <<EOF [Service] Environment="AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE" Environment="AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" Environment="AWS_REGION=us-west-2" EOF sudo systemctl daemon-reload sudo systemctl restart aws-workload-credentials-provider-acm
Windows
  1. Membangun atau mendapatkan penyedia

    Bangun biner penyedia dari sumber untuk Windows, atau dapatkan biner pra-bangun. Ikuti instruksi di Install Rust untuk menginstal rantai alat Rust.

    cargo build --release

    Executable ada di. target\release\aws-workload-credentials-provider.exe

  2. Buat file konfigurasi

    Buat file konfigurasi TOMM dengan detail sertifikat Anda. Sebagai contoh, lihat Konfigurasikan penyedia. Pemasang menyalin file ini secara C:\ProgramData\AWS\WorkloadCredentialsProvider\config.toml otomatis saat Anda menggunakan -Config parameter.

  3. Jalankan penginstal

    Jalankan skrip instal sebagai Administrator:

    cd aws_workload_credentials_provider_common\configuration .\install.ps1 -Config C:\path\to\your\config.toml

    Untuk menginstal tanpa memulai layanan:

    .\install.ps1 -Config C:\path\to\your\config.toml -NoStart
  4. (Opsional) MenyediakanAWScredentials

    Pada instans Amazon EC2 dengan profil instans terlampir, penyedia memperoleh kredensyal secara otomatis melalui IMDS. Untuk lingkungan lain, atur variabel lingkungan untuk layanan melalui Windows Registry:

    $regPath = "HKLM:\SYSTEM\CurrentControlSet\Services\AWSWorkloadCredentialsProvider-ACM" $envVars = @( "AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE", "AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "AWS_REGION=us-west-2" ) New-ItemProperty -Path $regPath -Name "Environment" -Value $envVars -PropertyType MultiString -Force Restart-Service AWSWorkloadCredentialsProvider-ACM

Konfigurasikan penyedia

Buat file konfigurasi TOMM dengan detail sertifikat Anda. Pemasang menyalin file ini /etc/aws-workload-credentials-provider/config.toml saat Anda menggunakan --config opsi.

NGINX
[logging] log_level = "info" log_to_file = true [capabilities.acm] enabled = true [[capabilities.acm.certificates]] certificate_arn = "arn:aws:acm:us-west-2:123456789012:certificate/abcd1234-5678-90ab-cdef-EXAMPLE11111" role_arn = "arn:aws:iam::123456789012:role/ACMExportRole" certificate_path = "/etc/pki/tls/certs/example.com.crt" private_key_path = "/etc/pki/tls/private/example.com.key" chain_path = "/etc/pki/tls/certs/example.com-chain.pem" refresh_command = "/usr/sbin/nginx -s reload"
Apache
[logging] log_level = "info" log_to_file = true [capabilities.acm] enabled = true [[capabilities.acm.certificates]] certificate_arn = "arn:aws:acm:us-west-2:123456789012:certificate/abcd1234-5678-90ab-cdef-EXAMPLE11111" role_arn = "arn:aws:iam::123456789012:role/ACMExportRole" certificate_path = "/etc/ssl/certs/example.com.crt" private_key_path = "/etc/ssl/private/example.com.key" chain_path = "/etc/ssl/certs/example.com-chain.pem" refresh_command = "/bin/systemctl reload httpd"
Apache (Windows)
[logging] log_level = "info" log_to_file = true [capabilities.acm] enabled = true [[capabilities.acm.certificates]] certificate_arn = "arn:aws:acm:us-west-2:123456789012:certificate/abcd1234-5678-90ab-cdef-EXAMPLE11111" role_arn = "arn:aws:iam::123456789012:role/ACMExportRole" certificate_path = 'C:\Apache24\conf\ssl\example.com.crt' private_key_path = 'C:\Apache24\conf\ssl\example.com.key' chain_path = 'C:\Apache24\conf\ssl\example.com-chain.pem' refresh_command = 'C:\Apache24\bin\httpd.exe -k restart'
catatan

Ketika chain_path dihilangkan, rantai sertifikat ditambahkan ke file di certificate_path untuk menghasilkan file fullchain. Ini kompatibel dengan server web yang mengharapkan satu file yang berisi sertifikat dan rantainya.

Muat ulang konfigurasi dinamis

Anda dapat memperbarui konfigurasi penyedia tanpa menginstal ulang dengan menjalankan acm reload perintah. Ini memvalidasi konfigurasi baru, memperbarui izin agar sesuai dengan jalur sertifikat baru, dan memulai ulang layanan.

Sertifikat yang dihapus dari konfigurasi berhenti disegarkan. Sertifikat baru segera memulai ekspor pertama mereka. Setiap sertifikat berjalan sebagai tugas independen, sehingga kegagalan dalam satu tidak mempengaruhi yang lain.

Linux
aws-workload-credentials-provider acm reload --config /path/to/new-config.toml
Windows
& 'C:\Program Files\AWS\WorkloadCredentialsProvider\bin\aws-workload-credentials-provider.exe' acm reload -Config C:\path\to\new-config.toml

Izin yang diperlukan

Kredensi dasar

Kredensyal dasar penyedia (profil instans atau lingkungan) harus dapat mengambil peran yang ditentukan dalam setiap sertifikat: role_arn

{ "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::123456789012:role/ACMExportRole" }

Peran ekspor sertifikat

Peran yang ditentukan dalam role_arn memerlukan izin berikut:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "acm:ExportCertificate", "Resource": "arn:aws:acm:us-west-2:123456789012:certificate/*" } ] }

Kebijakan kepercayaan peran harus memungkinkan identitas dasar penyedia untuk menganggapnya:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/EC2InstanceRole" }, "Action": "sts:AssumeRole" } ] }

Segarkan izin perintah (Linux)

Di Linux, penyedia menjalankan konfigurasi refresh_command melaluisudo. Pemasang menghasilkan entri sudoers /etc/sudoers.d/aws-workload-credentials-provider yang memungkinkan pengguna penyedia untuk menjalankan perintah yang dikonfigurasi dengan tepat tanpa prompt kata sandi.

penting

Pastikan /etc/sudoers menyertakan /etc/sudoers.d direktori. Pemasang memperingatkan jika direktif include ini tidak ada. Tanpa itu, file sudoers yang dihasilkan tidak berpengaruh dan perintah refresh akan gagal.

Di Windows, penyedia memicu tugas terjadwal refresh_command sebagai SYSTEM.

Verifikasi instalasi.

Setelah instalasi, verifikasi penyedia sedang berjalan dan sertifikat sedang ditulis:

Linux
  1. Periksa status layanan:

    sudo systemctl status aws-workload-credentials-provider-acm
  2. Tinjau log penyedia:

    cat /opt/aws/workload-credentials-provider/logs/acm_provider.log
  3. Verifikasi file sertifikat ada:

    ls -la /etc/pki/tls/certs/example.com.crt ls -la /etc/pki/tls/private/example.com.key
  4. Validasi konten sertifikat:

    openssl x509 -in /etc/pki/tls/certs/example.com.crt -noout -subject -dates
Windows
  1. Periksa status layanan:

    Get-Service AWSWorkloadCredentialsProvider-ACM | Format-List Name, Status, StartType
  2. Tinjau log penyedia:

    Get-Content "C:\ProgramData\AWS\WorkloadCredentialsProvider\logs\acm_provider.log" -Tail 20
  3. Verifikasi file sertifikat ada:

    Get-Item C:\certs\example.com.crt Get-Item C:\certs\example.com.key
  4. Validasi konten sertifikat:

    $cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\certs\example.com.crt") $cert | Select-Object Subject, NotBefore, NotAfter

Referensi konfigurasi

Bidang Diperlukan Default Deskripsi
logging.log_level Tidak info Verbositas logging:debug,,,info, warn error none
logging.log_to_file Tidak true Menulis log ke file (true) atau stdout/stderr (false)
capabilities.acm.enabled Tidak false Mengaktifkan atau menonaktifkan kemampuan ACM
certificates[].certificate_arn Ya ARN dari sertifikat ACM untuk diekspor
certificates[].role_arn Ya Peran IAM ARN untuk diasumsikan untuk panggilan ExportCertificate
certificates[].certificate_path Ya Jalur absolut untuk menulis file sertifikat
certificates[].private_key_path Ya Jalur absolut untuk menulis file kunci pribadi
certificates[].chain_path Tidak Jalur absolut untuk menulis rantai sertifikat. Jika dihilangkan, rantai ditambahkan ke certificate_path
certificates[].refresh_command Tidak Perintah untuk dijalankan setelah file sertifikat diperbarui. Harus menjadi jalan absolut
certificates[].certificate_and_chain_permission Tidak 0600 Izin file untuk file sertifikat dan rantai (format Linuxmode)
certificates[].key_permission Tidak 0600 Izin file untuk file kunci pribadi (modeformat Linux)

Pencatatan log

Di Linux, penyedia log ke/opt/aws/workload-credentials-provider/logs/acm_provider.log.

Di Windows, penyedia log keC:\ProgramData\AWS\WorkloadCredentialsProvider\logs\acm_provider.log. Acara mulai dan berhenti layanan juga direkam dalam Log Peristiwa Aplikasi Windows di bawah sumberAWSWorkloadCredentialsProvider-ACM.

Rotasi log — Penyedia membuat file log baru ketika file saat ini mencapai 10 MB, dan menyimpan hingga lima file log yang diarsipkan.

AWSservice logging — Saat penyedia memanggilExportCertificate, panggilan itu direkam AWS CloudTrail dengan string agen pengguna yang berisiaws-workload-credentials-provider. Operasi internal penyedia (siklus penjadwal, penulisan file) hanya muncul di log lokal.

Anda dapat mengonfigurasi logging dengan log_to_file pengaturan log_level dan. Lihat informasi yang lebih lengkap di Referensi konfigurasi.