Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure DevOps Services
Aprenda a usar scripts para crear conexiones de servicio de Azure Resource Manager con identidad de carga de trabajo en Azure Pipelines. Los scripts garantizan la coherencia, la eficacia y la repetibilidad al configurar conexiones de servicio, lo que reduce el riesgo de error humano. Ahorran tiempo, especialmente cuando se crean varias conexiones o se implementan en distintos entornos. Estos scripts también se pueden integrar en un proceso de automatización para escalar y administrar mejor las implementaciones grandes.
El uso de scripts como parte de un proceso de automatización ayuda a aplicar directivas de seguridad y requisitos de cumplimiento al garantizar que las conexiones de servicio usen los permisos y configuraciones correctos. También sirve como documentación para el proceso de configuración.
Prerrequisitos
Producto | Requisitos |
---|---|
Azure DevOps | - Una organización de Azure DevOps y un proyecto. Cree una organización o un proyecto si aún no lo ha hecho. |
Celeste | Una suscripción de Azure. Permisos: - Para crear una asignación de roles en Azure: debe tener permisos de Administrador de acceso de usuario o de Administrador de control de acceso basado en roles o permisos superiores. Estos roles permiten administrar el acceso y asignar roles necesarios para crear identidades. Para más información, consulte Roles integrados en Azure. |
Entra |
Permisos: - Para crear un registro de aplicaciones en Microsoft Entra: la Delegación del registro de aplicaciones debe estar habilitada o debe tener el rol Desarrollador de Aplicaciones. Para más información, consulte Roles integrados de Microsoft Entra. En lugar de crear un registro de aplicación en Entra, también puede crear una identidad administrada en Azure. |
Proceso
Restricciones
- En la automatización,
"creationMode": "Manual"
debe usarse al crear conexiones de servicio que necesiten una identidad de Microsoft Entra. Se necesitarían privilegios significativos de Microsoft Entra para que Azure DevOps cree todos los objetos en nombre de la persona que llama, por lo que Azure DevOps no admite el uso de"creationMode": "Automatic"
para principales que no son de usuario. En su lugar, la automatización de un extremo a otro debe crear individualmente cada objeto (identidad, conexión de servicio, credencial, asignación de roles). - La federación de identidades de carga de trabajo define una relación bidireccional entre la identidad y la conexión de servicio. Como resultado, los objetos deben crearse en un orden determinado y la credencial federada solo se puede crear después de crear la conexión de servicio.
Orden de ejecución de comandos
En esta tabla se proporciona información general sobre las propiedades clave intercambiadas entre los comandos de creación de cada objeto. Las dependencias de la salida determinan el orden de ejecución.
Paso | Entrada | Salida |
---|---|---|
Creación de una identidad en Microsoft Entra o Azure | tenantId |
appId , principalId |
Creación de una conexión de servicio en Azure DevOps | appId |
workloadIdentityFederationIssuer , workloadIdentityFederationSubject |
Creación de credenciales federadas en Microsoft Entra o Azure |
appId , , workloadIdentityFederationIssuer , workloadIdentityFederationSubject |
|
Creación de una asignación de roles en Azure | principalId |
1. Inicio de sesión con la CLI de Azure
Los siguientes comandos usan la CLI de Azure. Inicie sesión en el cliente previsto
az login --tenant TENANT_ID
Obtenga más información en Autenticación en Azure mediante la CLI de Azure.
2. Crear identidad
Cree una identidad mediante una identidad administrada o un registro de aplicaciones.
Cree una identidad administrada con az identity create
.
az identity create --name MyIdentity --resource-group MyResourceGroup --query '{clientId:clientId,principalId:principalId}'
Ejemplo de resultado:
{
"clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222"
}
Una identidad administrada crea un principal de servicio en Microsoft Entra. El identificador de objeto de la entidad de servicio también se denomina principalId
. Usa la entidad de servicio principal más adelante para asignar roles RBAC.
appId
se usa para crear la conexión de servicio en Azure DevOps.
Obtenga más información en az identity create.
3. Creación de una conexión de servicio
En este ejemplo se usa la extensión de la CLI de Azure de Azure DevOps y un archivo de configuración para crear la conexión de servicio. Esto configura la identidad creada en una nueva conexión de servicio de Azure. El servicePrincipalId
parámetro de autorización se rellena con la appId
de la identidad.
Necesitará un appId
para usar como entrada.
El primer fragmento de código es un archivo de configuración, ServiceConnectionGeneric.json
.
{
"data": {
"subscriptionId": "SUBSCRIPTION_ID",
"subscriptionName": "My Azure Subscription",
"environment": "AzureCloud",
"scopeLevel": "Subscription",
"creationMode": "Manual"
},
"name": "MyNewServiceEndpoint",
"type": "AzureRM",
"url": "https://management.azure.com/",
"authorization": {
"parameters": {
"tenantid": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"serviceprincipalid": "00001111-aaaa-2222-bbbb-3333cccc4444"
},
"scheme": "WorkloadIdentityFederation"
},
"isShared": false,
"isReady": true,
"serviceEndpointProjectReferences": [
{
"projectReference": {
"id": "c7e5f0b3-71fa-4429-9fb3-3321963a7c06",
"name": "TestProject"
},
"name": "MyNewServiceEndpoint"
}
]
}
az devops service-endpoint create -service-endpoint-configuration ./ServiceConnectionGeneric.json --query authorization.parameters
az devops service-endpoint create
automatiza la creación de una conexión de servicio en Azure DevOps mediante ServiceConnectionGeneric.json
. La salida incluye parámetros de autorización que usará en pasos futuros.
Ejemplo de resultado:
{
"serviceprincipalid": "00001111-aaaa-2222-bbbb-3333cccc4444",
"tenantid": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"workloadIdentityFederationIssuer": "https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0",
"workloadIdentityFederationIssuerType": "EntraID",
"workloadIdentityFederationSubject": "<federation-subject>"
}
Para obtener más información sobre este comando, consulte el punto de conexión del servicio de la CLI de Azure DevOps.
4. Creación de una credencial de identidad federada
Cree una credencial federada mediante la salida de workloadIdentityFederationIssuer
y workloadIdentityFederationSubject
del paso Crear una conexión de servicio.
az identity federated-credential create --name fic-for-sc
--identity-name MyIdentity
--resource-group MyResourceGroup
--issuer "https://login.microsoftonline.com/TENANT_ID/v2.0"
--subject "<federation-subject>"
--subscription MSI_SUBSCRIPTION_ID
az identity federated-credential create
vincula una credencial de identidad federada a una identidad administrada, lo que permite que la identidad administrada se autentique con Microsoft Entra ID mediante la reclamación de sujeto proporcionada.
Sugerencia
Agregue un carácter de continuación de línea (Bash: barra inversa, PowerShell: acento grave) al final de las líneas que no completen el comando.
La identidad administrada no tiene que crearse en la misma suscripción a la que se concede acceso en el paso Crear asignación de roles.
Para obtener más información sobre este comando, consulte az identity federated-credential create.
5. Crear asignación de roles
Agregue una asignación de roles a la identidad administrada o al registro de aplicaciones con az role assignment create
. Para ver los roles disponibles, consulte Roles integrados de Azure. La persona asignada al rol es la entidad de servicio asociada al registro de la aplicación o a la identidad administrada. Un principal de servicio se identifica mediante su identificador, también denominado principalId
.
principalId
se encuentra en la salida del comando Crear identidad.
az role assignment create --role Contributor --scope /subscriptions/SUBSCRIPTION_ID --assignee-object-id PRINCIPAL_ID --assignee-principal-type ServicePrincipal
az role assignment create --role Contributor
el comando asigna el rol de Colaborador a una entidad de servicio en el nivel de suscripción. Esto permite a la entidad de servicio administrar recursos dentro de la suscripción especificada.
Para obtener más información sobre este comando, consulte az role assignment create.