用 AWS Secrets Manager 于 GitLab - AWS Secrets Manager

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

用 AWS Secrets Manager 于 GitLab

AWS Secrets Manager 与。集成 GitLab。你可以利用 Secrets Manager 的密钥来保护你的 GitLab凭证,这样它们就不会再被硬编码了。 GitLab相反,当你的应用程序在 GitLab CI/CD 管GitLab 道中运行作业时,Runner 会从 Secrets Manager 中检索这些机密。

要使用此集成,您需要在 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,请完成以下先决条件:

  1. 创建密 AWS Secrets Manager 钥

    你需要一个 Secrets Manager 密钥,该密钥将在你的 GitLab 工作中检索,无需对这些凭据进行硬编码。在配置 GitLab 管道时,你需要 Secrets Manager 的密钥 ID。请参阅创建密 AWS Secrets Manager 钥了解更多信息。

  2. 在 IAM 控制台中创建 GitLab 您的 OIDC 提供商。

    在此步骤中,您将在 IAM 控制台中创建 GitLab 您的 OIDC 提供商。有关更多信息,请参阅创建 OpenID Connect (OIDC) 身份提供商和文档。GitLab

    在 IAM 控制台中创建 OIDC 提供商时,请使用以下配置:

    1. 将设置provider URL为您的 GitLab 实例。例如 gitlab.example.com

    2. audience或设置audsts.amazonaws.com

  3. 创建 IAM 角色和策略

    您需要创建 IAM 角色和策略。此角色由 with GitLab AWS Security Token Service (STS) 担任。有关更多信息,请参阅使用自定义信任策略创建角色

    1. 在 IAM 控制台中,创建 IAM 角色时使用以下设置:

      • Trusted entity type 设置为 Web identity

      • Group 设置为 your GitLab group

      • 设置Identity provider为您在步骤 2 中使用的提供商 URL(GitLab 实例)。

      • 设置Audience为您在步骤 2 中使用的受众群体

    2. 您还需要创建一个 IAM 策略以允许 GitLab 访问 AWS Secrets Manager。您可以将此策略添加到您的信任策略中。有关更多信息,请参阅创建 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: