本文为 SPIRE 官方文档 plugin_server_upstreamauthority_aws_pca 的中文译本,以英文原文为准。
🔗 穿越源码分析:Server 详解 · UpstreamAuthority · 上游 CA 与无缝轮换
服务端插件:UpstreamAuthority "aws_pca"
aws_pca 插件使用来自 AWS Certificate Manager(ACM)Private Certificate Authority(PCA)的证书颁发机构(certificate authority),为 SPIRE Server 签名中间签名证书(intermediate signing certificate)。
该插件接受以下配置项:
| 配置项 | 说明 |
|---|---|
| region | 要使用的 AWS 区域(Region) |
| certificate_authority_arn | "上游" CA 证书的 ARN |
| ca_signing_template_arn | (可选)用于 server CA 的签名模板(signing template)的 ARN。默认为仅用于终端实体(end-entity)证书的签名模板。可能的取值见 Using Templates。 |
| signing_algorithm | (可选)用于 server CA 的签名算法。默认为 CA 的默认值。可能的取值见 Issue Certificate。 |
| assume_role_arn | (可选)要担任(assume)的 IAM 角色的 ARN |
| endpoint | (可选)以主机名或全限定 URI 形式给出的端点(endpoint),用于覆盖默认端点。更多信息见 AWS SDK Config docs。 |
| supplemental_bundle_path | (可选)一个文件的路径,该文件包含应额外纳入信任包(bundle)的 PEM 编码 CA 证书。 |
插件会尝试使用默认凭据提供链(default provider chain)加载 AWS 凭据。这包括来自环境变量、共享凭据文件以及 EC2 实例角色的凭据。完整的默认凭据链见 Specifying Credentials。
关于 ACM Private Certificate Authority 的更多细节,见 AWS Certificate Manager Private Certificate Authority。
注意:来自 ACM 的 Private Certificate Authority 无法在保持相同 ARN 的前提下轮换其私钥。因此,目前若要更改由哪个 ACM CA 为 SPIRE 签名中间 CA,需要重启 SPIRE server。建议为 SPIRE 使用一个持久化的密钥存储(key store),以便在重启后仍保留已有的中间签名证书。
配置示例:
UpstreamAuthority "aws_pca" {
plugin_data {
region = "us-west-2"
certificate_authority_arn = "arn:aws:acm-pca:us-west-2:123456789012:certificate-authority/12ac02bc-d425-49f7-ab78-570a44972772"
ca_signing_template_arn = "arn:aws:acm-pca:::template/SubordinateCACertificate_PathLen0/V1"
signing_algorithm = "SHA256WITHECDSA"
assume_role_arn = "arn:aws:iam::123456789012:role/my-role"
}
}SPIRE server 要求为所用的 IAM 身份配置以下策略。
注意:所提供的示例允许访问所有 CA 和证书。应将资源(Resource)细化指定,以进一步限制授权范围。见 Configure Access to ACM Private CA。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ACMPCASigning",
"Effect": "Allow",
"Action": [
"acm-pca:DescribeCertificateAuthority",
"acm-pca:IssueCertificate",
"acm-pca:GetCertificate"
],
"Resource": "*"
}
]
}