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 インスタンスでは、プロバイダーは認証情報を自動的に取得します。他の環境では、systemd オーバーライドファイルを作成して認証情報を挿入します。

    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/*" } ] }

ロールの信頼ポリシーは、プロバイダーのベース ID がそれを引き受けることを許可する必要があります。

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

コマンドのアクセス許可を更新する (Linux)

Linux では、プロバイダーは refresh_commandを介して設定された を実行しますsudo。インストーラは で sudoers エントリを生成/etc/sudoers.d/aws-workload-credentials-providerし、プロバイダーユーザーがパスワードプロンプトなしで正確に設定されたコマンドを実行できるようにします。

重要

/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

設定リファレンス

フィールド [Required] (必須) デフォルト 説明
logging.log_level いいえ info 詳細のログ記録: debuginfowarnerrornone
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

ログのローテーション — プロバイダーは、現在のファイルが 10 MB に達すると新しいログファイルを作成し、アーカイブされたログファイルを最大 5 つ保存します。

AWSサービスログ記録 — プロバイダーが を呼び出すとExportCertificate、その呼び出しは を含むユーザーエージェント文字列を使用して AWSCloudTrail に記録されますaws-workload-credentials-provider。プロバイダーの内部オペレーション (スケジューラサイクル、ファイル書き込み) は、ローカルログにのみ表示されます。

ログ記録は、 log_levelおよび log_to_file設定で設定できます。詳細については、「設定リファレンス」を参照してください。