在 GitLab AWS Secrets Manager 中使用 - AWS Secrets Manager

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 GitLab AWS Secrets Manager 中使用

AWS Secrets Manager 與 GitLab 整合。您可以利用 Secrets Manager 秘密來保護 GitLab 登入資料,使其不再於 GitLab 中進行硬式編碼。反之,當您的應用程式在 GitLab CI/CD 管道中執行任務時,GitLab Runner 會從 Secrets Manager 擷取這些秘密。 GitLab

若要使用此整合,您將在 IAM 和 IAM 角色中建立 OpenID Connect (OIDC) 身分提供者 AWS Identity and Access Management 。這可讓 GitLab Runner 存取您的 Secrets Manager 秘密。如需 GitLab CI/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. audienceaud設定為 sts.amazonaws.com

  3. 建立 IAM 角色和政策

    您需要建立 IAM 角色和政策。此角色由 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 整合

完成先決條件後,您可以將 GitLab 設定為使用 Secrets Manager 來保護您的登入資料。

設定 GitLab 管道以使用 Secrets Manager

您需要使用下列資訊更新 GitLab CI/CD 組態檔案

  • 權杖設為 STS 的對象。

  • Secrets Manager 秘密 ID。

  • 在 GitLab 管道中執行任務時,您希望 GitLab Runner 擔任的 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"

如需詳細資訊,請參閱 GitLab Secrets Manager 整合文件

或者,您可以在 GitLab 中測試 OIDC 組態。如需詳細資訊,請參閱 GitLab 文件以測試 OIDC 組態

故障診斷

以下可協助您針對將 Secrets Manager 與 GitLab 整合時可能遇到的常見問題進行疑難排解。

GitLab 管道問題

如果您遇到 GitLab 管道問題,請確保下列事項:

  • 您的 YAML 檔案格式正確。如需詳細資訊,請參閱 GitLab 文件

  • 您的 GitLab 管道擔任正確的角色、具有適當的許可,以及存取正確的 AWS Secrets Manager 秘密。

其他資源

下列資源可協助您針對 GitLab 和 的問題進行疑難排解 AWS Secrets Manager: