本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
用 Amazon Secrets Manager 于 GitLab
Amazon Secrets Manager 与。集成 GitLab。你可以利用 Secrets Manager 的密钥来保护你的 GitLab凭证,这样它们就不会再被硬编码了。 GitLab相反,当你的应用程序在  GitLab  CI/CD 管GitLab 道
要使用此集成,您需要在 IAM 中创建一个 OpenID Connect (OIDC) 身份提供商 Amazon Identity and Access Management 和一个 IAM 角色。这允许  GitLab  Runner 访问你的 Secrets Manager 密钥。有关 C  GitLab  I/CD 和 OIDC 的更多信息,请参阅文档。GitLab
注意事项
如果您使用的是非公共 GitLab 实例,则无法使用此 Secrets Manager 集成。相反,请参阅非公共实例的GitLab 文档
先决条件
要将 Secrets Manager 与集成 GitLab,请完成以下先决条件:
- 
        创建密 Amazon Secrets Manager 钥你需要一个 Secrets Manager 密钥,该密钥将在你的 GitLab 工作中检索,无需对这些凭据进行硬编码。在配置 GitLab 管道时,你需要 Secrets Manager 的密钥 ID。请参阅创建密 Amazon 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 Amazon Security Token Service (STS) 担任。有关更多信息,请参阅使用自定义信任策略创建角色。 - 
            在 IAM 控制台中,创建 IAM 角色时使用以下设置: 
- 
            以下是允许 GitLab 代入角色的信任策略示例。您的信任策略应列出您 GitLab 的 Amazon Web Services 账户、URL 和项目路径 。 
- 
             
                
                { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRoleWithWebIdentity", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/gitlab.example.com" }, "Condition": { "StringEquals": { "gitlab.example.com:aud": [ "sts.amazon.com" ] }, "StringLike": { "gitlab.example.com:sub": [ "project_path:mygroup/project-*:ref_type:branch-*:ref:main*" ] } } } ] }
 
- 
            您还需要创建一个 IAM 策略以允许 GitLab 访问 Amazon Secrets Manager。您可以将此策略添加到您的信任策略中。有关更多信息,请参阅创建 IAM 策略。 
- 
             
                
                { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:us-east-1:111122223333:secret:your-secret" } ] }
 
 
- 
            
Amazon Secrets Manager 与集成 GitLab
完成先决条件后,您可以配置为使用 Sec GitLab rets Manager 来保护您的凭证。
将 GitLab 管道配置为使用 Secrets Manager
您需要使用以下信息更新 GitLab CI/CD 配置文件
- 
          代币的受众设置为 STS。 
- 
          Secrets Manager 的密钥 ID。 
- 
          您希望 GitLab Runner 在 GitLab管道中执行任务时扮演的 IAM 角色。 
- 
          密钥的存储位置。 Amazon Web Services 区域 
GitLab 从 Secrets Manager 中获取密钥并将该值存储在临时文件中。此文件的路径存储在 CI/CD 变量中,类似于文件类型 CI/CD
以下是 GitLab CI/CD 配置文件的 YAML 文件片段:
variables: AWS_REGION:us-east-1AWS_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 管道扮演了正确的角色,拥有相应的权限并可以访问正确的 Amazon Secrets Manager 密钥。 
其他资源
以下资源可以帮助您解决 GitLab 和的问题 Amazon Secrets Manager: