nwarila-platform/ubi9-aws-signing-helper

GitHub: nwarila-platform/ubi9-aws-signing-helper

提供基于Red Hat UBI 9的AWS IAM Roles Anywhere签名助手,用于自托管集群的短期凭证管理。

Stars: 0 | Forks: 0

# ubi9-aws-signing-helper Red Hat UBI 9 (`ubi-micro`) OCI 镜像的 **AWS IAM Roles Anywhere 签名助手** (`aws_signing_helper`) — 作为服务模式的边车,为自托管(非-EKS)集群提供短期 STS 凭证,这些集群没有 IRSA / 实例配置文件 / IMDS 来源 AWS 凭证。 助手是用 FIPS 140-3 **Go 密码学模块 v1.0.0**(CMVP #5247)**FROM SOURCE** 构建的:`GOFIPS140=v1.0.0`,`CGO_ENABLED=1`,`GODEBUG=fips140=on`。这与模板的复制验证预构建模型不同,因为 `aws_signing_helper` 是 glibc-DYNAMIC(PKCS#11/TPM cgo 支持无条件编译,因此不可能进行 `CGO_ENABLED=0` 静态构建,并且预构建的供应商二进制文件无法携带 `GOFIPS140` 的来源)。参见 [ADR-0001](docs/decision-records/repo/0001-helper-go-native-fips.md). ``` aws_signing_helper serve --port 9911 --hop-limit 1 \ --certificate /aws/certs/tls.crt --private-key /aws/certs/tls.key \ --trust-anchor-arn --profile-arn --role-arn # 消费者:AWS_EC2_METADATA_SERVICE_ENDPOINT=http://127.0.0.1:9911 ``` `serve` 及其标志作为 pod 参数提供;镜像入口只是助手二进制文件。 ## 前置条件 合约检查只需要 Python;镜像生命周期需要 Docker: - Python 3.12+ - Bash,用于构建和运行时加固脚本 - Docker Buildx(带有 QEMU 以支持多架构),用于编译 + 构建镜像 ## 快速入门 运行合约检查(无需 Docker): ``` python tools/verify.py ci ``` 从头到尾构建镜像(需要 Docker): ``` make image ``` `make image` 从清单中渲染 docker buildx 标志,为 `linux/amd64` 构建 UBI 9 镜像,`gobuild` 阶段克隆并编译 `aws_signing_helper`(带有经过验证的 FIPS 模块),并通过 `go version -m` 在二进制文件达到运行时阶段之前断言 FIPS 构建属性,然后对其运行运行时加固断言。 ## 供应链 - 两阶段 UBI 9 构建:一个 `ubi-minimal` `microdnf --installroot` 阶段组装运行时根文件系统(`/var/lib/rpm` 中的 rpm 数据库被保留,以便扫描器枚举软件包),最终的 `ubi-micro` 运行时不包含 shell、包管理器、`curl`/`wget`。 - 助手在 Dockerfile 中从固定的上游源(在发布标签 `github.com/aws/rolesanywhere-credential-helper`)编译,使用固定的、摘要地址的 `golang` 构建器镜像。Go 构建器限制在 1.26 以下,以确保验证的 FIPS 模块保持有效。 - 多架构(`linux/amd64`,`linux/arm64`),摘要地址,通过 BuildKit **SBOM + provenance** 发布到 GHCR,**GitHub 艺术品证明**,以及无密钥的 **Cosign 签名**(递归)。参见 [`.github/workflows/publish-image.yaml`](.github/workflows/publish-image.yaml). - 发布网关还运行 **OpenSCAP DISA RHEL 9 STIG** 配置文件、**Trivy** 和 **Grype** 对推送的摘要进行操作,以及运行时加固合约和一个匿名的公共 GHCR 拉取检查。 ## 运行时加固合约 非 root UID/GID **65532**(命名为 `nonroot` 的账户合成到根文件系统中);只读根文件系统兼容;丢弃所有能力;`seccompProfile: RuntimeDefault`。镜像不包含 shell 和清单中列出的任何禁止的工具;它携带一个填充的 CA 捆绑在 `/etc/pki/tls/certs/ca-bundle.crt`,用于 TLS 到 AWS 终端。 [`tests/runtime-hardening.sh`](tests/runtime-hardening.sh) 断言这些属性对构建/发布的镜像。 ## 仓库布局 | 路径 | 角色 | | --- | --- | | [`contracts/image-manifest.schema.json`](contracts/image-manifest.schema.json) | 可供人类审查的镜像清单模式(支持从源 `application.build` 模型)。 | | [`examples/image-manifest.json`](examples/image-manifest.json) | 包含真实固定 UBI 基础、Go 构建器和上游源引用的清单。 | | [`containers/Dockerfile`](containers/Dockerfile) | 三阶段构建:`rpm-rootfs`(ubi-minimal)、`gobuild`(golang FIPS 编译)、`runtime`(ubi-micro)。 | | [`tests/runtime-hardening.sh`](tests/runtime-hardening.sh) | 运行时断言脚本(无 shell/包管理器/curl/wget;rpmdb 存在;CA 捆绑已填充)。 | | [`tools/verify.py`](tools/verify.py) | 本地和 CI 合约检查。 | | [`tools/check_image_manifest.py`](tools/check_image_manifest.py) | 验证镜像清单合约。 | | [`tools/generate_build_args.py`](tools/generate_build_args.py) | 从清单中渲染 docker buildx 标志(UBI 基础 + Go 工具链/源固定)。 | | [`tools/build_image.sh`](tools/build_image.sh) | 从清单和渲染的构建参数本地构建镜像。 | | [`tools/check_compliance_checklist.py`](tools/check_compliance_checklist.py) | 验证 RHEL 9 STIG + CIS 适用性检查清单。 | | [`tools/verify_public_ghcr_pull.sh`](tools/verify_public_ghcr_pull.sh) | 断言发布的摘要可以从 GHCR 匿名拉取。 | | [`docs/`](docs/) | Diataxis 文档以及 org/template/repo ADR 范围。 | | [`.github/workflows/`](.github/workflows/) | `ci.yaml` 运行合约检查和可重用的镜像构建;`codeql.yaml`、`scorecard.yaml`、`security.yaml`、`auto-merge.yaml` 和 `repo-hygiene.yaml` 调用 `nwarila-platform/.github` 中的规范可重用工作流程。 | | [`.github/workflows/reusable-ubi-image-build.yaml`](.github/workflows/reusable-ubi-image-build.yaml) | 仓库特定的可重用:构建(在 Dockerfile 中编译)-> 运行时加固 -> `--help` 烟雾测试。 | | [`.github/workflows/publish-image.yaml`](.github/workflows/publish-image.yaml) | 主要/标签/手动发布:多架构构建+推送带有 SBOM/provenance -> 证明 -> 递归 Cosign -> OpenSCAP STIG + Trivy + Grype -> 运行时加固 -> 匿名 GHCR 拉取。 | ## 标准化仓库接口 | 命令 | 目的 | | --- | --- | | `make verify` | 运行本地 CI-等效合约检查。 | | `make build-args` | 从清单中渲染 docker buildx 标志。 | | `make image-build` | 构建 `linux/amd64` 的 OCI 镜像。 | | `make image-test` | 对构建的镜像运行运行时加固断言。 | | `make image` | 运行完整的构建 -> 加固管道。 | ## 许可证 MIT - 查看 [LICENSE](LICENSE).
标签:AWS IAM, Bash, Docker, FIPS 140-3, Go 语言, HashiCorp Vault, JA3, KMS, Python, QEMU, Red Hat UBI, 内联执行, 加密模块, 多云架构, 多架构支持, 安全合规, 安全认证, 安全防御评估, 容器镜像, 无后门, 日志审计, 网络代理, 自动解封, 请求拦截, 逆向工具, 非EKS集群