View a markdown version of this page

AWS워크로드 자격 증명 공급자 - AWSCertificate Manager

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS워크로드 자격 증명 공급자

AWS워크로드 자격 증명 공급자는 ACM에서 내보낸 퍼블릭프라이빗 TLS 인증서 사용을 자동화합니다. 공급자는 인증서와 프라이빗 키를 주기적으로 검색하고, 구성된 경로에 쓰고, 선택적으로 명령을 실행하여 웹 서버와 같은 종속 서비스를 다시 로드합니다.

워크로드 자격 증명 공급자를 다음 컴퓨팅 환경에서 사용할 수 있습니다.

  • Amazon Elastic Compute Cloud(Amazon EC2)

  • 자격 AWS증명이 있는 온프레미스 서버

워크로드 자격 증명 공급자는 IAM 역할 가정을 사용하여 인증서를 검색합니다. Linux와 Windows 모두에서 권한이 낮은 전용 사용자로 기본적으로 실행되며 권한이 제한된 인증서 파일을 작성합니다.

중요

이 공급자에서는 내보낼 수 있는 인증서만 사용할 수 있습니다. 자세한 내용은 AWS Certificate Manager 내보내기 가능한 퍼블릭 인증서프라이빗 인증서 내보내기를 참조하세요.

AWS워크로드 자격 증명 공급자는 오픈 소스입니다. 소스 코드 및 기여는 GitHub 리포지토리를 참조하세요.

인증서 자동화 작동 방식

공급자는 구성된 각 인증서를 고정된 간격으로 새로 고치는 스케줄러를 사용합니다.

  • 새로 고침 간격은 24시간입니다.

  • 각 주기에서 공급자는 인증서를 내보내고 디스크의 파일과 비교하며 콘텐츠가 변경된 경우에만 새 파일을 작성합니다.

  • 인증서 파일이 업데이트되면 구성된가 refresh_command 실행됩니다(예: NGINX 또는 Apache 다시 로드).

  • 인증서 콘텐츠가 변경되지 않은 경우 새로 고침 명령을 건너뜁니다.

공급자는 플릿 전체에서 여러 공급자가 동시에 시작될 때 동기화된 API 호출을 방지하기 위해 작은 임의 지터를 사용하여 서비스 시작 직후 모든 시스템 부팅에서 초기 새로 고침을 수행합니다.

또한 공급자는 동적 구성 재로드를 지원하므로 재설치 없이 인증서를 추가, 제거 또는 수정할 수 있습니다. 자세한 내용은 동적 구성 다시 로드 단원을 참조하십시오.

사전 조건

공급자를 설치하기 전에 다음이 있는지 확인합니다.

  • systemd가 있는 Linux 인스턴스(Amazon Linux 2023, Ubuntu 20.04 이상 또는 RHEL 8 이상)

  • 또는 PowerShell 5.1 이상에서 Windows Server 2016 이상을 실행하는 Windows 인스턴스

  • 설치 관리자 액세스로 설치 프로그램 실행

  • ACM에서 내보낼 수 있는 인증서

  • ACM 내보내기 권한이 있는 IAM 역할( 참조필수 권한)

  • AWS인스턴스에서 사용 가능한 자격 증명(인스턴스 프로파일, 환경 변수 또는 자격 증명 파일)

공급자 설치

Linux
  1. 공급자 빌드

    소스에서 공급자 바이너리를 빌드하거나 플랫폼에 대해 사전 빌드된 바이너리를 가져옵니다. Rust 설치의 지침에 따라 Rust 도구 체인을 설치합니다.

    cargo build --release

    실행 파일은에 있습니다target/release/aws-workload-credentials-provider.

  2. 구성 파일을 생성합니다.

    인증서 세부 정보가 포함된 TOML 구성 파일을 생성합니다. 예시는 공급자 구성 섹션을 참조하세요. --config 옵션을 사용하면 설치 관리자가이 파일을에 /etc/aws-workload-credentials-provider/config.toml 자동으로 복사합니다.

  3. 설치 프로그램을 실행합니다.

    설치 스크립트를 루트로 실행합니다.

    cd aws_workload_credentials_provider_common/configuration sudo ./install --config /path/to/your/config.toml
  4. (선택 사항) AWS자격 증명 제공

    인스턴스 프로파일이 연결된 Amazon EC2 인스턴스에서 공급자는 자격 증명을 자동으로 가져옵니다. 다른 환경의 경우 시스템 재정의를 생성하여 자격 증명을 주입합니다.

    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. 공급자를 빌드하거나 확보합니다.

    Windows용 소스에서 공급자 바이너리를 빌드하거나 사전 빌드된 바이너리를 가져옵니다. Rust 설치의 지침에 따라 Rust 도구 체인을 설치합니다.

    cargo build --release

    실행 파일은에 있습니다target\release\aws-workload-credentials-provider.exe.

  2. 구성 파일을 생성합니다.

    인증서 세부 정보가 포함된 TOML 구성 파일을 생성합니다. 예시는 공급자 구성 섹션을 참조하세요. -Config 파라미터를 사용하면 설치 관리자가이 파일을에 C:\ProgramData\AWS\WorkloadCredentialsProvider\config.toml 자동으로 복사합니다.

  3. 설치 프로그램을 실행합니다.

    설치 스크립트를 관리자로 실행합니다.

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

    서비스를 시작하지 않고를 설치하려면:

    .\install.ps1 -Config C:\path\to\your\config.toml -NoStart
  4. (선택 사항) AWS자격 증명 제공

    인스턴스 프로파일이 연결된 Amazon EC2 인스턴스에서 공급자는 IMDS를 통해 자격 증명을 자동으로 가져옵니다. 다른 환경의 경우 Windows 레지스트리를 통해 서비스에 대한 환경 변수를 설정합니다.

    $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

공급자 구성

인증서 세부 정보가 포함된 TOML 구성 파일을 생성합니다. --config 옵션을 /etc/aws-workload-credentials-provider/config.toml 사용하면 설치 관리자가이 파일을에 복사합니다.

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'
참고

chain_path이 생략되면 인증서 체인이의 파일에 추가certificate_path되어 전체 체인 파일을 생성합니다. 이는 인증서와 해당 체인이 포함된 단일 파일이 필요한 웹 서버와 호환됩니다.

동적 구성 다시 로드

acm reload 명령을 실행하여 다시 설치하지 않고도 공급자의 구성을 업데이트할 수 있습니다. 이렇게 하면 새 구성이 검증되고, 새 인증서 경로와 일치하도록 권한을 업데이트하고, 서비스를 다시 시작합니다.

구성에서 제거된 인증서는 새로 고침이 중지됩니다. 새 인증서는 첫 번째 내보내기를 즉시 시작합니다. 각 인증서는 독립적인 작업으로 실행되므로 한 인증서의 실패는 다른 인증서에 영향을 주지 않습니다.

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

필수 권한

기본 자격 증명

공급자의 기본 자격 증명(인스턴스 프로파일 또는 환경)은 각 인증서의에 지정된 역할을 수임할 수 있어야 합니다. role_arn

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

인증서 내보내기 역할

에 지정된 역할에는 다음 권한이 role_arn 필요합니다.

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

역할의 신뢰 정책은 공급자의 기본 자격 증명이 이를 수임하도록 허용해야 합니다.

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

명령 권한 새로 고침(Linux)

Linux에서 공급자는를 refresh_command 통해 구성된를 실행합니다sudo. 설치 관리자는에서 공급자 사용자가 암호 프롬프트 없이 정확하게 구성된 명령을 실행할 수 /etc/sudoers.d/aws-workload-credentials-provider 있는 sudoers 항목을 생성합니다.

중요

/etc/sudoers.d 디렉터리가 /etc/sudoers 포함되어 있는지 확인합니다. 여기에는 명령이 포함되어 있지 않으면 설치 관리자가 경고합니다. 그렇지 않으면 생성된 sudoers 파일은 아무런 효과가 없으며 새로 고침 명령이 실패합니다.

Windows에서 공급자는를 SYSTEM 예약 작업refresh_command으로 트리거합니다.

설치 확인

설치 후 공급자가 실행 중이고 인증서가 작성되고 있는지 확인합니다.

Linux
  1. 서비스 상태 확인:

    sudo systemctl status aws-workload-credentials-provider-acm
  2. 공급자 로그 검토:

    cat /opt/aws/workload-credentials-provider/logs/acm_provider.log
  3. 인증서 파일이 존재하는지 확인합니다.

    ls -la /etc/pki/tls/certs/example.com.crt ls -la /etc/pki/tls/private/example.com.key
  4. 인증서 콘텐츠 검증:

    openssl x509 -in /etc/pki/tls/certs/example.com.crt -noout -subject -dates
Windows
  1. 서비스 상태 확인:

    Get-Service AWSWorkloadCredentialsProvider-ACM | Format-List Name, Status, StartType
  2. 공급자 로그 검토:

    Get-Content "C:\ProgramData\AWS\WorkloadCredentialsProvider\logs\acm_provider.log" -Tail 20
  3. 인증서 파일이 존재하는지 확인합니다.

    Get-Item C:\certs\example.com.crt Get-Item C:\certs\example.com.key
  4. 인증서 콘텐츠 검증:

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

구성 참조

Field 필수 기본값 설명
logging.log_level 아니요 info 로깅 세부 정보: debug, info, warn, error, none
logging.log_to_file 아니요 true 파일(true) 또는 stdout/stderr(false)에 로그 쓰기
capabilities.acm.enabled 아니요 false ACM 기능 활성화 또는 비활성화
certificates[].certificate_arn 내보낼 ACM 인증서의 ARN
certificates[].role_arn ExportCertificate 호출에 대해 수임할 IAM 역할 ARN
certificates[].certificate_path 인증서 파일을 쓸 절대 경로
certificates[].private_key_path 프라이빗 키 파일을 쓰기 위한 절대 경로
certificates[].chain_path 아니요 인증서 체인을 작성할 절대 경로입니다. 생략하면 체인이에 추가됩니다. certificate_path
certificates[].refresh_command 아니요 인증서 파일이 업데이트된 후 실행되는 명령입니다. 절대 경로여야 합니다.
certificates[].certificate_and_chain_permission 아니요 0600 인증서 및 체인 파일에 대한 파일 권한(Linux mode 형식)
certificates[].key_permission 아니요 0600 프라이빗 키 파일에 대한 파일 권한(Linux mode 형식)

로깅

Linux에서는 공급자가에 로그합니다/opt/aws/workload-credentials-provider/logs/acm_provider.log.

Windows에서는 공급자가에 로그인합니다C:\ProgramData\AWS\WorkloadCredentialsProvider\logs\acm_provider.log. 서비스 시작 및 중지 이벤트는 소스 아래의 Windows 애플리케이션 이벤트 로그에도 기록됩니다AWSWorkloadCredentialsProvider-ACM.

로그 교체 - 공급자는 현재 파일이 10MB에 도달하면 새 로그 파일을 생성하고 최대 5개의 아카이브된 로그 파일을 저장합니다.

AWS서비스 로깅 - 공급자가를 호출하면 ExportCertificate해당 호출은가 포함된 사용자 에이전트 문자열을 사용하여 AWSCloudTrail에 기록됩니다aws-workload-credentials-provider. 공급자의 내부 작업(스케줄러 주기, 파일 쓰기)은 로컬 로그에만 표시됩니다.

log_levellog_to_file 설정을 사용하여 로깅을 구성할 수 있습니다. 자세한 내용은 구성 참조 단원을 참조하십시오.