本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
用 AWS Secrets Manager 于 GitLab
AWS Secrets Manager 与。集成 GitLab。你可以利用 Secrets Manager 的密钥来保护你的 GitLab凭证,这样它们就不会再被硬编码了。 GitLab相反,当你的应用程序在 GitLab CI/CD 管GitLab 道
要使用此集成,您需要在 IAM 中创建一个 OpenID Connect (OIDC) 身份提供商 AWS Identity and Access Management 和一个 IAM 角色。这允许 GitLab Runner 访问你的 Secrets Manager 密钥。有关 C GitLab I/CD 和 OIDC 的更多信息,请参阅文档。GitLab
注意事项
如果您使用的是非公共 GitLab 实例,则无法使用此 Secrets Manager 集成。相反,请参阅非公共实例的GitLab 文档
先决条件
要将 Secrets Manager 与集成 GitLab,请完成以下先决条件:
-
创建密 AWS Secrets Manager 钥
你需要一个 Secrets Manager 密钥,该密钥将在你的 GitLab 工作中检索,无需对这些凭据进行硬编码。在配置 GitLab 管道时,你需要 Secrets Manager 的密钥 ID。请参阅创建密 AWS Secrets Manager 钥了解更多信息。
-
在 IAM 控制台中创建 GitLab 您的 OIDC 提供商。
在此步骤中,您将在 IAM 控制台中创建 GitLab 您的 OIDC 提供商。有关更多信息,请参阅创建 OpenID Connect (OIDC) 身份提供商和文档。GitLab
在 IAM 控制台中创建 OIDC 提供商时,请使用以下配置:
-
将设置
provider URL
为您的 GitLab 实例。例如gitlab.example.com
。 -
将
audience
或设置aud
为sts.amazonaws.com
。
-
-
创建 IAM 角色和策略
您需要创建 IAM 角色和策略。此角色由 with GitLab AWS Security Token Service (STS) 担任。有关更多信息,请参阅使用自定义信任策略创建角色。
-
在 IAM 控制台中,创建 IAM 角色时使用以下设置:
-
AWS Secrets Manager 与集成 GitLab
完成先决条件后,您可以配置为使用 Sec GitLab rets Manager 来保护您的凭证。
将 GitLab 管道配置为使用 Secrets Manager
您需要使用以下信息更新 GitLab CI/CD 配置文件
-
代币的受众设置为 STS。
-
Secrets Manager 的密钥 ID。
-
您希望 GitLab Runner 在 GitLab管道中执行任务时扮演的 IAM 角色。
-
密钥的存储位置。 AWS 区域
GitLab 从 Secrets Manager 中获取密钥并将该值存储在临时文件中。此文件的路径存储在 CI/CD 变量中,类似于文件类型 CI/CD
以下是 GitLab CI/CD 配置文件的 YAML 文件片段:
variables: AWS_REGION:
us-east-1
AWS_ROLE_ARN: 'arn:aws:iam::111122223333
:role/gitlab-role
' job: id_tokens: AWS_ID_TOKEN: aud: 'sts.amazonaws.com' secrets: DATABASE_PASSWORD: aws_secrets_manager: secret_id: "arn:aws:secretsmanager:us-east-1
:111122223333
:secret:secret-name
"
有关更多信息,请参阅 S GitLabecrets Manager 集成文档
或者,您也可以在中测试 OIDC 配置。 GitLab有关更多信息,请参阅测试 OIDC 配置的GitLab 文档
故障排除
以下内容可以帮助您解决在将 Secrets Manager 与集成时可能遇到的常见问题 GitLab。
GitLab 管道问题
如果您遇到 GitLab 管道问题,请确保以下几点:
-
您的 YAML 文件格式正确。有关更多信息,请参阅 GitLab 文档
。 -
您的 GitLab 管道扮演了正确的角色,拥有相应的权限,并且可以访问正确的 AWS Secrets Manager 密钥。
其他资源
以下资源可以帮助您解决 GitLab 和的问题 AWS Secrets Manager: