Skip to content

Desarrollo

Velaa98 edited this page Jun 16, 2019 · 12 revisions

Creación de la aplicación en AAD

Desde el portal de azure en el servicio "Azure Active Directory" crearemos una nueva aplicación en la sección "Apps registrations" con las siguientes características:

  • Nombre identificativo.
  • Tipos de cuenta compatibles: Solo las cuentas de este directorio organizativo.

Configuración de la aplicación en AAD

Desde el portal de azure en la sección "Permisos de API" de la aplicación que acabamos de crear añadiremos los siguientes permisos para las siguientes APIs:

Para la API de Microsoft Graph como tipo "Permisos de la aplicación":

  • Device.ReadWrite.All

Para la API de Azure Key Vault como tipo "Permisos delegados":

  • user_impersonation

Para poder usar la aplicación desde las funciones será necesario generar un secreto de aplicación, para ello desde la sección "Administrar - Certficados y secretos", añadimos un "Nuevo secreto de cliente" el cual debemos guardar puesto que posteriormente no podremos volver a consultarlo.

Nota: Si el secreto contiene caracteres especiales será necesario codificarlo para evitar problemas. Ejemplo

Creación de la instancia de funciones

Desde el portal de azure en el recurso "Function App" podemos crear una nueva instancia de funciones con las siguientes características:

  • Nombre identificativo.
  • Suscripción gratuita (en mi caso).
  • El grupo de recursos será el creado anteriormente para la implementación de CLAPS.
  • El sistema operativo será Windows.
  • El plan de hospedaje es irrelevante al estar en la prueba gratuita, podemos dejarlo por defecto en el plan de consumo.
  • La ubicación será la misma que para los demás recursos.
  • La pila en tiempo de ejecución será PowerShell a pesar de estar en versión preliminar.
  • Para el almacenamiento podemos dejar que se cree como viene marcado por defecto.

Configuración de la instancia de funciones

Desde la sección "Características de la plataforma" en la instancia que acabamos de crear, en "Redes- Identidad", activamos la identidad "Asignada por el sistema". De este modo estará registrada en AAD y podemos condecerle permisos para acceder al almacén de claves que crearemos posteriormente.

Creación del almacén de claves

Desde el portal de azure en el servicio "Almacenes de claves" crearemos un nuevo almacén con las siguientes características:

  • Nombre identificativo.
  • Suscripción gratuita (en mi caso).
  • El grupo de recursos será el creado anteriormente para la implementación de CLAPS.
  • La ubicación será la misma que para los demás recursos.
  • Las demás opciones podemos dejarlas por defecto.

Creación del par de claves

Desde el almacén creado en la sección de "Claves", generaremos un nuevo par de claves con las siguientes características

  • Opción: Generar.
  • Nombre identificativo.
  • Tipo de clave: RSA.
  • Tamaño de la clave RSA: 2048.
  • ¿Está habilitado?: Sí.

Configuración del almacén de claves.

Desde la sección "Control de acceso (IAM)" del almacén que acabamos de crear concederemos permisos a la instancia de funciones que creamos anteriormente. Para ello "Agregar una asignación de roles":

  • Rol: Propietario
  • Asignar acceso a: Function App
  • Nombre de la instancia que hemos creado.5

Creación de las funciones de CLAPS

Desde la instancia de funciones creada, en el apartado "Funciones" crearemos una nueva función con las siguientes características:

  • Entorno de desarrollo: En el portal.
  • Plantilla o Tipo de función: Webhook y API o HTTP trigger.
  • Nombre: FunctionEncrypt
  • Nivel de autorización: Function.

Una vez creada sustituimos el código de ejemplo de la función por el de la función para cifrar y almacenar.

Repetimos el proceso para la función para descrifrar:

  • Entorno de desarrollo: En el portal.
  • Plantilla o Tipo de función: Webhook y API o HTTP trigger.
  • Nombre: FunctionDecrypt
  • Nivel de autorización: Function.

Esta vez lo sustituimos por el de la función para descifrar.

Configuración de las funciones

Deberemos rellenar las variables con los valores del entorno donde se está implantando CLAPS.

Variable Valor
$KeyVaultName Nombre del almacén de claves
$KeyVaultKeyName Nombre de la clave para cifrar
$KeyVaultKeyVersion Versión a usar de la clave para cifrar
$AlgEncrypt Algoritmo de cifrado
$ClapsExtensionName Nombre para la extensión de claps, (inmutable una vez establecido)
$TenantId Identificador del tenant donde se va a implantar CLAPS
$AppId Identificador de la aplicación creada en AAD
$AppSecret Secreto de la aplicación creada en AAD