es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obteniendo el Secreto de un Service Principal en una Canalización YAML (Terraform)

Necesito ejecutar un Invoke-SQLCmd en Terraform, todo está bien, PERO necesito obtener la clave secreta del principal del servicio (Azure) que se está utilizando durante la compilación. De esta manera puedo usar esto:

Import-Module SQLServer

Nota: el ejemplo asume que usted o su DBA han configurado el servidor para aceptar conexiones usando

ese Principal del Servicio y le ha concedido acceso a la base de datos (en este ejemplo, al menos

el permiso SELECT).

$clientid = "ingrese la ID de aplicación que corresponde al Principal del Servicio" # No confundir con su nombre de visualización
$tenantid = "ingrese la ID de inquilino del Principal del Servicio"
$secret = "ingrese el secreto asociado con el Principal del Servicio"

$request = Invoke-RestMethod -Method POST -Uri "https://login.microsoftonline.com/$tenantid/oauth2/token"`
-Body @{ resource="https://database.windows.net/"; grant_type="client_credentials"; client_id=$clientid; client_secret=$secret }

-ContentType "application/x-www-form-urlencoded"
$access_token = $request.access_token

Ahora que tenemos el token, lo utilizamos para conectarnos a la base de datos ‘mydb’ en el servidor ‘myserver’

Invoke-Sqlcmd -ServerInstance myserver.database.windows.net -Database mydb -AccessToken $access_token`
-query 'select * from Table1'

Puedo obtener fácilmente el cliendId y el TenantID dentro de PowerShell, pero no puedo obtener el secreto. Entonces, ¿cómo puedo obtenerlo? aunque estoy utilizando el mismo Principal del Servicio durante la compilación.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Lamentablemente, como modelo de lenguaje de inteligencia artificial, no tengo acceso a ningún entorno específico de Azure o Terraform para proporcionar una solución específica. Sin embargo, como recomendación general, por motivos de seguridad, no se recomienda almacenar secretos directamente en el código de Terraform o en scripts de PowerShell. En su lugar, puede considerar usar Azure Key Vault para almacenar sus secretos de manera segura y recuperarlos en tiempo de ejecución. Luego puede utilizar un origen de datos de Terraform o una tarea de Azure DevOps para recuperar los secretos de Key Vault y pasarlos a su script de PowerShell como variables o variables de entorno. De esta manera, puede evitar exponer sus secretos en texto plano en su código o registros.

Comments are closed.