本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 GitLab AWS Secrets Manager 中使用
AWS Secrets Manager 與 GitLab 整合。您可以利用 Secrets Manager 秘密來保護 GitLab 登入資料,使其不再於 GitLab 中進行硬式編碼。反之,當您的應用程式在 GitLab CI/CD 管道中執行任務時,GitLab Runner
若要使用此整合,您將在 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 整合,請完成下列先決條件:
-
建立 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 角色和政策。此角色由 GitLab 使用 AWS Security Token Service (STS) 擔任。如需詳細資訊,請參閱使用自訂信任政策建立角色。
-
在 IAM 主控台中,建立 IAM 角色時使用下列設定:
-
將
Trusted entity type
設定為Web identity
。 -
將
Group
設定為your GitLab group
。 -
Identity provider
將 設定為您在步驟 2 中使用的相同提供者 URL (GitLab 執行個體)。 -
Audience
設定為您在步驟 2 中使用的相同對象。
-
-
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: