Habilitar la rotación automática de certificados en un grupo de Batch

Puede crear un grupo de Batch con un certificado que se puede renovar automáticamente. Para ello, se debe crear el grupo con una identidad administrada asignada por el usuario que tenga acceso al certificado en Azure Key Vault.

Creación de una identidad asignada por el usuario

En primer lugar, cree la identidad administrada asignada por el usuario en el mismo inquilino que la cuenta de Batch. No es necesario que esta identidad administrada esté en el mismo grupo de recursos ni en la misma suscripción.

Asegúrese de anotar el id. de cliente de la identidad gestionada asignada al usuario. Este valor lo necesitará más adelante.

Captura de pantalla que muestra el ID. de cliente de una identidad administrada asignada por el usuario en el Azure Portal.

Creación del certificado

A continuación, debe crear un certificado y agregarlo a Azure Key Vault. Si aún no ha creado un almacén de claves, debe hacerlo en primer lugar. Para las instrucciones, consulte Inicio rápido: Establecimiento y recuperación de un certificado de Azure Key Vault mediante Azure Portal.

Al crear el certificado, asegúrese de establecer el tipo de acción duración para que se renueve automáticamente y especifique el número de días después del cual se debe renovar el certificado.

Captura de pantalla de la creación del certificado en Azure Portal.

Una vez creado el certificado, tome nota de su identificador de secreto. Este valor lo necesitará más adelante.

Captura de pantalla que muestra el identificador de secreto de un certificado.

Agregar una política de acceso en Azure Key Vault

En el almacén de claves, asigne una directiva de acceso Key Vault que permita que la identidad administrada asignada por el usuario tenga acceso a secretos y certificados. Para instrucciones detalladas, consulte Asignación de una directiva de acceso de Key Vault mediante Azure Portal.

Creación de un grupo de Batch con una identidad administrada asignada por el usuario

Cree un grupo de Batch con la identidad administrada mediante la biblioteca de administración de .net de Batch. Para obtener más información, vea configurar identidades administradas en grupos de Batch.

Sugerencia

Los grupos existentes no se pueden actualizar con la extensión de máquina virtual de Key Vault. Tendrá que volver a crear el grupo.

En el ejemplo siguiente se usa la API de REST de administración de batch para crear un grupo. Asegúrese de usar el identificador de secreto del certificado para observedCertificates y el identificador de cliente de la identidad administrada para msiClientId, reemplazando los datos de ejemplo siguientes.

URI DE LA API REST

PUT https://management.azure.com/subscriptions/<subscriptionid>/resourceGroups/<resourcegroupName>/providers/Microsoft.Batch/batchAccounts/<batchaccountname>/pools/<poolname>?api-version=2021-01-01

Cuerpo de la solicitud para el nodo de Linux

{
  "name": "test2",
  "type": "Microsoft.Batch/batchAccounts/pools",
  "properties": {
    "vmSize": "STANDARD_DS2_V2",
    "taskSchedulingPolicy": {
      "nodeFillType": "Pack"
    },
    "deploymentConfiguration": {
      "virtualMachineConfiguration": {
        "imageReference": {
          "publisher": "canonical",
          "offer": "ubuntuserver",
          "sku": "20.04-lts",
          "version": "latest"
        },
        "nodeAgentSkuId": "batch.node.ubuntu 20.04",
        "extensions": [
          {
            "name": "KVExtensions",
            "type": "KeyVaultForLinux",
            "publisher": "Microsoft.Azure.KeyVault",
            "typeHandlerVersion": "3.0",
            "autoUpgradeMinorVersion": true,
            "settings": {
              "secretsManagementSettings": {
                "pollingIntervalInS": "300",
                "certificateStoreLocation": "/var/lib/waagent/Microsoft.Azure.KeyVault",
                "requireInitialSync": true,
                "observedCertificates": [
                  "https://testkvwestus2s.vault.azure.net/secrets/authcertforumatesting/8f5f3f491afd48cb99286ba2aacd39af"
                ]
              },
              "authenticationSettings": {
                "msiEndpoint": "http://169.254.169.254/metadata/identity",
                "msiClientId": "b9f6dd56-d2d6-4967-99d7-8062d56fd84c"
              }
            }
          }
        ]
      }
    },
    "scaleSettings": {
      "fixedScale": {
        "targetDedicatedNodes": 1,
        "resizeTimeout": "PT15M"
      }
    }
  },
  "identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/042998e4-36dc-4b7d-8ce3-a7a2c4877d33/resourceGroups/ACR/providers/Microsoft.ManagedIdentity/userAssignedIdentities/testumaforpools": {}
    }
  }
}

Cuerpo de la solicitud para el nodo de Windows

{
    "name": "test2",
    "type": "Microsoft.Batch/batchAccounts/pools",
    "properties": {
        "vmSize": "STANDARD_DS2_V2",
        "taskSchedulingPolicy": {
            "nodeFillType": "Pack"
        },
        "deploymentConfiguration": {
            "virtualMachineConfiguration": {
                "imageReference": {
                    "publisher": "microsoftwindowsserver",
                    "offer": "windowsserver",
                    "sku": "2022-datacenter",
                    "version": "latest"
                },
                "nodeAgentSkuId": "batch.node.windows amd64",
                "extensions": [
                    {
                        "name": "KVExtensions",
                        "type": "KeyVaultForWindows",
                        "publisher": "Microsoft.Azure.KeyVault",
                        "typeHandlerVersion": "3.0",
                        "autoUpgradeMinorVersion": true,
                        "settings": {
                            "secretsManagementSettings": {
                                "pollingIntervalInS": "300",
                                "requireInitialSync": true,
                                "observedCertificates": [
                                    {
                                        "url": "https://testkvwestus2s.vault.azure.net/secrets/authcertforumatesting/8f5f3f491afd48cb99286ba2aacd39af",
                                        "certificateStoreLocation": "LocalMachine",
                                        "keyExportable": true
                                    }
                                ]
                            },
                            "authenticationSettings": {
                                "msiEndpoint": "http://169.254.169.254/metadata/identity",
                                "msiClientId": "b9f6dd56-d2d6-4967-99d7-8062d56fd84c"
                            }
                        },
                    }
               ]
            }
        },
        "scaleSettings": {
            "fixedScale": {
                "targetDedicatedNodes": 1,
                "resizeTimeout": "PT15M"
            }
        },
    },
    "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
            "/subscriptions/042998e4-36dc-4b7d-8ce3-a7a2c4877d33/resourceGroups/ACR/providers/Microsoft.ManagedIdentity/userAssignedIdentities/testumaforpools": {}
        }
    }
}

Validación del certificado

Para confirmar que el certificado se ha implementado correctamente, inicie sesión en el nodo de proceso. Debería ver un resultado similar al siguiente:

root@74773db5fe1b42ab9a4b6cf679d929da000000:/var/lib/waagent/Microsoft.Azure.KeyVault.KeyVaultForLinux-1.0.1363.13/status# cat 1.status
[{"status":{"code":0,"formattedMessage":{"lang":"en","message":"Successfully started Key Vault extension service. 2021-03-03T23:12:23Z"},"operation":"Service start.","status":"success"},"timestampUTC":"2021-03-03T23:12:23Z","version":"1.0"}]root@74773db5fe1b42ab9a4b6cf679d929da000000:/var/lib/waagent/Microsoft.Azure.KeyVault.KeyVaultForLinux-1.0.1363.13/status#

Solución de problemas de la extensión de Key Vault

Si la extensión de Key Vault está configurada incorrectamente, el nodo de proceso podría estar en un estado utilizable. Para solucionar problemas de error de extensión de Key Vault, puede establecer temporalmente requireInitialSync en false y volver a implementar el grupo, el nodo de proceso está en estado inactivo, puede iniciar sesión en el nodo de proceso para comprobar los registros de extensiones de KeyVault en busca de errores y corregir los problemas de configuración. Consulte el siguiente vínculo a la documentación de la extensión de Key Vault para obtener más información.

Pasos siguientes