Uso de AWS Secrets Manager en GitLab
AWS Secrets Manager se integra con GitLab. Puede aprovechar los secretos de Secrets Manager para proteger sus credenciales de GitLab, a fin de que dejen de estar codificadas en GitLab. GitLab Runner
Para usar esta integración, debe crear un proveedor de identidad OpenID Connect (OIDC) en IAM de AWS Identity and Access Management y un rol de IAM. Esto permite a GitLab Runner acceder a su secreto de Secrets Manager. Para obtener más información sobre GitLab CI/CD y OIDC, consulte la documentación de GitLab
Consideraciones
Si utiliza una instancia de GitLab privada, no puede utilizar esta integración de Secrets Manager. Más bien, consulte la documentación de GitLab para las instancias privadas
Requisitos previos
Para integrar Secrets Manager con GitLab, se deben cumplir los siguientes requisitos previos:
-
Creación de un secreto de AWS Secrets Manager
Necesitará un secreto de Secrets Manager que se recupere en su trabajo de GitLab y que elimine el requisito de realizar una codificación rígida para estas credenciales. El ID secreto de Secrets Manager será necesario cuando configure su canalización de GitLab. Para obtener más información, consulte Creación de un secreto de AWS Secrets Manager.
-
Transformación de GitLab en el proveedor de OIDC en la consola de IAM.
En este paso, convertirá a GitLab en su proveedor de OIDC en la consola de IAM. Para obtener más información, consulte Crear un proveedor de identidad de OpenID Connect (OIDC) y la documentación de GitLab
. Al crear el proveedor de OIDC en la consola de IAM, debe utilizar las siguientes configuraciones:
-
Establezca
provider URLen su instancia de GitLab. Por ejemplo,gitlab.example.com. -
Establezca
audienceoaudensts.amazonaws.com.
-
-
Creación de una política y un rol de IAM
Deberá crear un rol de IAM y una política. GitLab asume este rol con AWS Security Token Service (STS). Para obtener más información, consulte Crear un rol mediante políticas de confianza personalizadas.
-
En la consola de IAM, utilice la siguiente configuración al crear el rol de IAM:
-
Establece
Trusted entity typeenWeb identity. -
Establece
Groupenyour GitLab group. -
Establezca
Identity provideren la misma URL del proveedor (la instancia de GitLab) que utilizó en el paso 2. -
Establezca
Audienceen la misma audiencia que utilizó en el paso 2.
-
-
El siguiente ejemplo es una política de confianza que le permite a GitLab adoptar roles. La política de confianza debe incluir su Cuenta de AWS, la URL de GitLab y la ruta del proyecto
. -
{ "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*" ] } } } ] }
-
También tendrá que crear una política de IAM que permita el acceso de GitLab a AWS Secrets Manager. Puede agregar esta política a la política de confianza. Para obtener más información, consulte Creación de políticas de IAM.
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:us-east-1:111122223333:secret:your-secret" } ] }
-
Integración de AWS Secrets Manager con GitLab
Tras completar los requisitos previos, configure GitLab para que utilice Secrets Manager para proteger las credenciales.
Configure la canalización de GitLab para utilizar Secrets Manager
Deberá actualizar su archivo de configuración de CI/CD de GitLab
-
La audiencia del token establecido en STS.
-
El ID del secreto de Secrets Manager.
-
El rol de IAM que se desea que GitLab Runner asuma al ejecutar tareas en la canalización de GitLab.
-
La Región de AWS donde se almacena el secreto.
GitLab obtiene el secreto de Secrets Manager y almacena el valor en un archivo temporal. La ruta a este archivo se almacena en una variable CI/CD, similar a las variables CI/CD de tipo archivo
A continuación, se muestra es un fragmento del archivo YAML para un archivo de configuración de CI/CD de GitLab:
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"
Para obtener más información, consulte la documentación de la integración de Secrets Manager en GitLab
De manera opcional, puede probar su configuración de OIDC en GitLab. Para obtener más información, consulte la documentación de GitLab para probar la configuración de OIDC
Solución de problemas
La siguiente información puede ayudar a solucionar problemas comunes que encuentre a la hora de integrar Secrets Manager con GitLab.
Problemas con la canalización de GitLab
Si tiene problemas con la canalización de GitLab, asegúrase de lo siguiente:
-
El archivo YAML tiene el formato correcto. Para obtener más información, consulte la documentation de GitLab
. -
La canalización de GitLab asume el rol correcto, tiene los permisos adecuados y el acceso al secreto de AWS Secrets Manager correcto.
Recursos adicionales
Los siguientes recursos pueden ayudar a solucionar problemas con GitLab y AWS Secrets Manager: