infamousjoeg.provisioning

Provisionamiento

Un rol de Ansible para facilitar la tarea de incorporar cuentas en la Seguridad de Acceso Privilegiado (PAS) de CyberArk utilizando la API de Gestión de CyberArk.

Disponible en Ansible Galaxy

Requisitos

Ansible >= v2.5

Variables del Rol

Variable Descripción ¿Requerido?
cyberark_api_base_url La URL base del API de Servicios Web de CyberArk (Ejemplo: https://pvwa.cyberark.com)
cyberark_auth_type El método de autenticación a usar (CyberArk/LDAP/RADIUS/Windows)
cyberark_validate_certs Valor booleano para validar SSL (sí/no) No
cyberark_username Nombre de usuario autorizado para la API
cyberark_password Contraseña del usuario autorizado para la API
cyberark_acct_name Valor único de "Nombre" del objeto de credencial en PVWA
cyberark_acct_address Valor de dirección del objeto de credencial en PVWA No
cyberark_acct_username Valor de nombre de usuario del objeto de credencial en PVWA No
cyberark_acct_password Valor de contraseña del objeto de credencial en PVWA No
cyberark_acct_platformId Plataforma para gestionar el objeto de credencial
cyberark_acct_safeName Caja para almacenar el objeto de credencial
cyberark_acct_secretType El tipo de secreto que se está incorporando (contraseña/clave)
cyberark_acct_autoManagement Valor booleano para activar/desactivar la gestión automática del objeto de credencial (sí/no) No
cyberark_acct_manualReason La razón por la cual se está desactivando la gestión automática del objeto de credencial No

Ejemplo de Playbook

Un ejemplo de cómo desplegar un stack LAMP e incorporar el administrador de base de datos MySQL resultante que se crea durante la inicialización de MySQL.

---
- hosts: localhost

  pre_tasks:
    - name: Instalar Apache y PHP
      yum:
        name: ['httpd', 'php', 'php-mysql']
        state: present

    - name: Instalar Dependencias Específicas del Rol Web
      yum:
        name: ['git', 'wget', 'curl', 'jq', 'libsemanage-python']
        state: present

    - name: Iniciar Apache
      service:
        name: httpd
        state: started
        enabled: yes

    - name: Configurar SELinux para Permitirse Conexión httpd a Base de Datos Remota
      seboolean:
        name: httpd_can_network_connect_db
        state: true
        persistent: yes

    - name: Crear Página de Inicio index.php
      copy:
        dest: "/var/www/html/index.php"
        content: |
          <?php echo "¡Hola Mundo!"; ?>
      
    - name: Instalar Paquete MariaDB
      yum:
        name: ['mariadb-server', 'MySQL-python']
        state: present

    - name: Configurar SELinux para Iniciar MySQL en Cualquier Puerto 
      seboolean:
        name: mysql_connect_any
        state: true
        persistent: yes

    - name: Iniciar Servicio MySQL
      service:
        name: mariadb
        state: started
        enabled: yes

    - name: Crear una Nueva Base de Datos
      mysql_db:
        name: demo
        state: present
        collation: utf8_general_ci

    - name: Establecer Hecho con el Nombre del Host de la Máquina Remota Actual
      set_fact:
        mysql_address: "{{ inventory_hostname }}"

    - name: Establecer Hecho con Nombre de Usuario de la Base de Datos MySQL
      set_fact:
        mysql_username: demo

    - name: Establecer Hecho con Contraseña Aleatoria para el Usuario de la Base de Datos MySQL
      set_fact:
        mysql_password: "{{ lookup('password', '/dev/null length=15 chars=ascii_letters') }}"
      no_log: yes

    - name: Crear un Usuario de Base de Datos
      mysql_user:
        name: "{{ mysql_username }}"
        password: "{{ mysql_password }}"
        priv: "*.*:ALL"
        host: localhost
        state: present

    - name: Copiar datos de ejemplo al sistema de archivos local /tmp/
      copy:
        src: files/dump.sql
        dest: /tmp/dump.sql
    
    - name: Insertar datos de ejemplo en la tabla demo en MySQL
      shell: "mysql -u {{ mysql_username }} -p{{ mysql_password }} demo < /tmp/dump.sql"

    - name: Reiniciar Apache 
      service:
        name: httpd
        state: restarted

    - name: Instalar Script de Conexión a la Base de Datos PHP db.php
      copy:
        src: files/db.php
        dest: /var/www/html/db.php

  roles:
    - role: infamousjoeg.provisioning
      cyberark_api_base_url: https://components.cyberarkdemo.example
      cyberark_auth_type: LDAP
      cyberark_validate_certs: no
      cyberark_username: Svc_ProvTest_Fedora
      cyberark_password: Cyberark1
      cyberark_acct_name: TEST-AUTO-ONBOARD-{{ mysql_address }}-{{ mysql_username }}
      cyberark_acct_address: "{{ mysql_address }}"
      cyberark_acct_username: "{{ mysql_username }}"
      cyberark_acct_password: "{{ mysql_password }}"
      cyberark_acct_platformId: MySQL
      cyberark_acct_safeName: TEST-AUTO-ONBOARD
      cyberark_acct_secretType: password
      cyberark_acct_autoManagement: no
      cyberark_acct_manualReason: Por motivos de demostración

Prueba

Requisitos

  • Python 2.7.x
  • Docker CE
  • Ansible >= 2.5
  • pip install --user molecule
  • pip install molecule[docker]

Uso

Prueba usando Ansible Molecule:

molecule test

Licencia

MIT

Acerca del proyecto

Onboarding and offboarding of credential objects in CyberArk's Privileged Access Security (PAS) Core solution

Instalar
ansible-galaxy install infamousjoeg.provisioning
Licencia
mit
Descargas
213
Propietario
Sr. DevOps Security Engineer for @cyberark