Acerca del almacenamiento externo de GitHub Actions
GitHub Actions usa el almacenamiento de blobs externo para almacenar los datos generados por las ejecuciones de flujo de trabajo. Los datos almacenados incluyen registros de flujo de trabajo, cachés y artefactos de compilación cargados por el usuario. Para más información, consulta "Iniciar con GitHub Actions para GitHub Enterprise Server".
Hay dos opciones para configurar GitHub Enterprise Server para conectarse al proveedor de almacenamiento externo:
- OpenID Connect (OIDC)
- Autenticación tradicional basada en credenciales mediante secretos
Se recomienda usar OIDC siempre que sea posible, ya que no necesitarás crear ni administrar secretos de credenciales confidenciales y de larga duración para el proveedor de almacenamiento y no correrás el riesgo de exponerlos. Después de definir una confianza con OIDC, el proveedor de almacenamiento en la nube emite automáticamente tokens de acceso de corta duración a tu instancia de GitHub Enterprise Server, que expiran automáticamente.
Requisitos previos
Note
Los únicos proveedores de almacenamiento de S3 compatibles con GitHub son Amazon S3 y MinIO Gateway for NAS.
Hay otros productos de almacenamiento compatibles con la API de S3 que los partners de GitHub han autovalidado como compatibles con GitHub Actions en GitHub Enterprise Server. Para obtener más información, consulta el repositorio de partners de almacenamiento de GHES.
En el caso de los productos de almacenamiento validados a través del programa de asociación tecnológica GitHub, el proveedor de almacenamiento es responsable del soporte técnico y la documentación para usar el producto de almacenamiento con GitHub Actions.
Antes de que habilites las GitHub Actions, asegúrate de que has completado los siguientes pasos:
-
Crea tu cubo de Amazon S3 para almacenar los datos que generan las ejecuciones de flujo de trabajo.
-
Revisa los requisitos de hardware de las GitHub Actions. Para obtener más información, vea «Iniciar con GitHub Actions para GitHub Enterprise Server».
-
Se debe configurar el TLS para el dominio de GitHub Enterprise Server. Para obtener más información, vea «Configurar TLS».
Note
Te recomendamos ampliamente que configures el TLS en GitHub Enterprise Server con un certificado que firme una autoridad confiable. Aunque un certificado auto-firmado podría funcionar, se requeriría una configuración adicional para tus ejecutores auto-hospedados y esto no se recomienda para los ambientes productivos.
-
Si tiene un servidor proxy HTTP configurado en GitHub:
-
Debe agregar
.localhost
,127.0.0.1
y::1
a la lista de exclusión de proxy HTTP (en ese orden). -
Si la ubicación del almacenamiento externo no es enrutable, también debes agregar la dirección URL del almacenamiento externo a la lista de exclusión.
Para más información sobre cómo cambiar la configuración del proxy, consulta "Configuración de un servidor proxy web de salida".
-
Si usas OIDC para la conexión al proveedor de almacenamiento, debes exponer las siguientes direcciones URL de servicio de token de OIDC en tu instancia de GitHub Enterprise Server en la red pública de Internet:
https://HOSTNAME/_services/token/.well-known/openid-configuration https://HOSTNAME/_services/token/.well-known/jwks
Esto garantiza que el proveedor de almacenamiento pueda ponerse en contacto con tu instancia de GitHub Enterprise Server para la autenticación.
Habilitación de GitHub Actions con Amazon S3 mediante OIDC (recomendado)
Para configurar GitHub Enterprise Server para usar OIDC con un cubo de Amazon S3, primero debes crear un proveedor de OIDC de Amazon, luego crear un rol de Administración de identidad y acceso (IAM) y, por último, configurar GitHub Enterprise Server para usar el proveedor y el rol para acceder al cubo de S3.
1. Creación de un proveedor de OIDC de Amazon
-
Consigue la huella digital de tu instancia de GitHub Enterprise Server.
-
Usa el siguiente comando de OpenSSL para obtener la huella digital SHA1 para tu instancia de GitHub Enterprise Server, reemplazando
HOSTNAME
por el nombre de host público para tu instancia de GitHub Enterprise ServerShell openssl s_client -connect HOSTNAME:443 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -sha1 -in /dev/stdin
openssl s_client -connect HOSTNAME:443 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -sha1 -in /dev/stdin
Por ejemplo:
openssl s_client -connect my-ghes-host.example.com:443 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -sha1 -in /dev/stdin
El comando devuelve una huella digital en el formato siguiente:
SHA1 Fingerprint=AB:12:34:56:78:90:AB:CD:EF:12:34:56:78:90:AB:CD:EF:12:34:56
-
Quita los dos puntos (
:
) del valor de huella digital y guarda el valor para usarlo más adelante.Por ejemplo, la huella digital del valor devuelto en el paso anterior es:
AB1234567890ABCDEF1234567890ABCDEF123456
-
-
Con la CLI de AWS, usa el siguiente comando para crear un proveedor OIDC para tu instancia de GitHub Enterprise Server. Reemplaza
HOSTNAME
por el nombre de host público de tu instancia de GitHub Enterprise Server yTHUMBPRINT
por el valor de huella digital del paso anterior.Shell aws iam create-open-id-connect-provider \ --url https://HOSTNAME/_services/token \ --client-id-list "sts.amazonaws.com" \ --thumbprint-list "THUMBPRINT"
aws iam create-open-id-connect-provider \ --url https://HOSTNAME/_services/token \ --client-id-list "sts.amazonaws.com" \ --thumbprint-list "THUMBPRINT"
Por ejemplo:
Shell aws iam create-open-id-connect-provider \ --url https://my-ghes-host.example.com/_services/token \ --client-id-list "sts.amazonaws.com" \ --thumbprint-list "AB1234567890ABCDEF1234567890ABCDEF123456"
aws iam create-open-id-connect-provider \ --url https://my-ghes-host.example.com/_services/token \ --client-id-list "sts.amazonaws.com" \ --thumbprint-list "AB1234567890ABCDEF1234567890ABCDEF123456"
Para más información sobre cómo instalar la CLI de AWS, consulta la documentación de Amazon.
Warning
Si el certificado de tu instancia de GitHub Enterprise Server cambia en el futuro, debes actualizar el valor de huella digital en el proveedor de OIDC de Amazon para que la confianza de OIDC siga funcionando.
2. Creación de un rol de IAM
-
Abre la consola de AWS y ve al servicio Administración de identidad y acceso (IAM).
-
En el menú izquierdo, en "Administración de acceso", haz clic en Roles y, a continuación, en Crear rol.
-
En la página "Seleccionar entidad de confianza", indica las siguientes opciones:
- En "Tipo de entidad de confianza", haz clic en Identidad web.
- En "Proveedor de identidades", usa el menú desplegable Elegir proveedor y selecciona el proveedor de OIDC que creaste en los pasos anteriores. Debe denominarse
HOSTNAME/_services/token
, dondeHOSTNAME
es el nombre de host público para tu instancia de GitHub Enterprise Server. - En "Audiencia", selecciona
sts.amazonaws.com
.
-
Haga clic en Next.
-
En la página "Add permissions", usa el filtro para buscar y seleccionar la directiva
AmazonS3FullAccess
. -
Haga clic en Next.
-
En la página "Nombre, revisión y creación", escribe un nombre para el rol y haz clic en Crear rol.
-
En la página "Roles" de IAM, selecciona el rol que acabas de crear.
-
En "Resumen", anota el valor de ARN para el rol, ya que esto es necesario más adelante.
-
Haz clic en la pestaña Relaciones de confianza y, a continuación, haz clic en Editar directiva de confianza.
-
Edita la directiva de confianza para agregar una nueva notificación
sub
. El valor deCondition
debe coincidir con el ejemplo siguiente, reemplazandoHOSTNAME
por el nombre de host público para tu instancia de GitHub Enterprise Server:... "Condition": { "StringEquals": { "HOSTNAME/_services/token:aud": "sts.amazonaws.com", "HOSTNAME/_services/token:sub": "HOSTNAME" } } ...
Por ejemplo:
... "Condition": { "StringEquals": { "my-ghes-host.example.com/_services/token:aud": "sts.amazonaws.com", "my-ghes-host.example.com/_services/token:sub": "my-ghes-host.example.com" } } ...
-
Haz clic en Actualizar directiva.
3. Configuración de GitHub Enterprise Server para conectarse a Amazon S3 mediante OIDC
-
Desde una cuenta administrativa de GitHub Enterprise Server, en la esquina superior derecha de cualquier página, haga clic en .
-
Si todavía no está en la página "Administrador del sitio", en la esquina superior izquierda, haga clic en Administrador del sitio.
-
En la barra lateral " Administrador del sitio", haz clic en Consola de administración .
-
En la barra lateral "Configuración", haga clic en Acciones.
-
En "GitHub Actions", seleccione Habilitar Acciones de GitHub.
-
En "Almacenamiento de artefactos y registros", junto a "Amazon S3", haz clic en Configuración.
-
En "Autenticación", selecciona OpenID Connect (OIDC) y escribe los valores del almacenamiento:
- AWS S3 Bucket (Cubo de AWS S3): nombre del cubo de S3.
- ROL de AWS: ARN para el rol que creó en los procedimientos anteriores. Por ejemplo,
arn:aws:iam::123456789:role/my-role-name
. - Región de AWS: región de AWS para el cubo. Por ejemplo,
us-east-1
.
-
Haz clic en el botón Probar configuración de almacenamiento para validar la configuración de almacenamiento.
Si hay algún error al validar la configuración de almacenamiento, comprueba la configuración con el proveedor de almacenamiento e inténtalo de nuevo.
-
En la barra lateral "Configuración" , haga clic en Guardar configuración.
Note
Al guardar la configuración en Consola de administración se restablecen los servicios del sistema, lo que podría generar un tiempo de inactividad visible para el usuario.
-
Espera que se complete la fase de configuración.
Habilitación de GitHub Actions con almacenamiento de Amazon S3 mediante claves de acceso
-
Con la consola de AWS o la CLI, cree una clave de acceso para el cubo de almacenamiento. GitHub Actions requiere los siguientes permisos para la clave de acceso que accederá al bucket:
s3:PutObject
s3:GetObject
s3:ListBucketMultipartUploads
s3:ListMultipartUploadParts
s3:AbortMultipartUpload
s3:DeleteObject
s3:ListBucket
kms:GenerateDataKey
(si se ha habilitado el cifrado de Key Management Service [KMS])kms:Decrypt
(si se ha habilitado el cifrado de Key Management Service [KMS])
Para más información sobre cómo administrar las claves de acceso de AWS,vea la "documentación sobre administración de identidades y accesos de AWS".
-
Desde una cuenta administrativa de GitHub Enterprise Server, en la esquina superior derecha de cualquier página, haga clic en .
-
Si todavía no está en la página "Administrador del sitio", en la esquina superior izquierda, haga clic en Administrador del sitio.
-
En la barra lateral " Administrador del sitio", haz clic en Consola de administración .
-
En la barra lateral "Configuración", haga clic en Acciones.
-
En "GitHub Actions", seleccione Habilitar Acciones de GitHub.
-
En "Almacenamiento de artefactos y registros", junto a "Amazon S3", haz clic en Configuración.
-
En "Autenticación", selecciona Basado en credenciales y escribe los detalles del cubo de almacenamiento:
-
URL del servicio de AWS: la dirección URL del servicio del cubo. Por ejemplo, si el cubo de S3 se ha creado en la región
us-west-2
, este valor debe serhttps://s3.us-west-2.amazonaws.com
.Para más información, vea "Puntos de conexión del servicio AWS" en la documentación de AWS.
-
AWS S3 Bucket (Cubo de AWS S3): nombre del cubo de S3.
-
AWS S3 Access Key and AWS S3 Secret Key: el identificador de clave de acceso de AWS y la clave secreta para el cubo.
-
-
Haz clic en el botón Probar configuración de almacenamiento para validar la configuración de almacenamiento.
Si hay algún error al validar la configuración de almacenamiento, comprueba la configuración con el proveedor de almacenamiento e inténtalo de nuevo.
-
En la barra lateral "Configuración" , haga clic en Guardar configuración.
Note
Al guardar la configuración en Consola de administración se restablecen los servicios del sistema, lo que podría generar un tiempo de inactividad visible para el usuario.
-
Espera que se complete la fase de configuración.
Pasos siguientes
Después de que la ejecución de configuración se haya completado correctamente, GitHub Actions se habilitará en GitHub. Para los próximos pasos, como administrar los permisos de acceso a GitHub Actions y agregar ejecutores autohospedados, vuelve a "Iniciar con GitHub Actions para GitHub Enterprise Server".