infamousjoeg.provisioning

Provisionnement

Un rôle Ansible pour faciliter l'intégration des comptes dans la CyberArk Core Privileged Access Security (PAS) en utilisant l'API de gestion de CyberArk.

Disponible sur Ansible Galaxy

Exigences

Ansible >= v2.5

Variables du Rôle

Variable Description Requis ?
cyberark_api_base_url L'URL de base de l'API de gestion des services Web CyberArk (Exemple : https://pvwa.cyberark.com) Oui
cyberark_auth_type La méthode d'authentification à utiliser (CyberArk/LDAP/RADIUS/Windows) Oui
cyberark_validate_certs Valeur booléenne pour valider SSL (oui/non) Non
cyberark_username Nom d'utilisateur autorisé pour l'API Oui
cyberark_password Mot de passe du nom d'utilisateur autorisé pour l'API Oui
cyberark_acct_name Valeur unique "Nom" de l'objet d'identification depuis PVWA Oui
cyberark_acct_address Valeur d'adresse de l'objet d'identification depuis PVWA Non
cyberark_acct_username Valeur de nom d'utilisateur de l'objet d'identification depuis PVWA Non
cyberark_acct_password Valeur de mot de passe de l'objet d'identification depuis PVWA Non
cyberark_acct_platformId Plateforme pour gérer l'objet d'identification Oui
cyberark_acct_safeName Coffre pour stocker l'objet d'identification Oui
cyberark_acct_secretType Le type de secret à intégrer (mot de passe/clés) Oui
cyberark_acct_autoManagement Valeur booléenne pour activer/désactiver la gestion automatique de l'objet d'identification (oui/non) Non
cyberark_acct_manualReason La raison pour laquelle la gestion automatique est désactivée sur l'objet d'identification Non

Exemple de Playbook

Un exemple de déploiement d'une pile LAMP et d'intégration de l'administrateur de base de données MySQL résultant créé lors de l'initialisation de MySQL.

---
- hosts: localhost

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

    - name: Installer les dépendances spécifiques au rôle Web
      yum:
        name: ['git', 'wget', 'curl', 'jq', 'libsemanage-python']
        state: present

    - name: Démarrer Apache
      service:
        name: httpd
        state: started
        enabled: yes

    - name: Configurer SELinux pour autoriser la connexion httpd à la base de données distante
      seboolean:
        name: httpd_can_network_connect_db
        state: true
        persistent: yes

    - name: Créer la page de démarrage index.php
      copy:
        dest: "/var/www/html/index.php"
        content: |
          <?php echo "Hello World!"; ?>
      
    - name: Installer le paquet MariaDB
      yum:
        name: ['mariadb-server', 'MySQL-python']
        state: present

    - name: Configurer SELinux pour démarrer MySQL sur n'importe quel port 
      seboolean:
        name: mysql_connect_any
        state: true
        persistent: yes

    - name: Démarrer le service MySQL
      service:
        name: mariadb
        state: started
        enabled: yes

    - name: Créer une nouvelle base de données
      mysql_db:
        name: demo
        state: present
        collation: utf8_general_ci

    - name: Définir un fait avec le nom d'hôte actuel de la machine distante
      set_fact:
        mysql_address: "{{ inventory_hostname }}"

    - name: Définir un fait avec le nom d'utilisateur de la base de données MySQL
      set_fact:
        mysql_username: demo

    - name: Définir un fait avec un mot de passe aléatoire pour l'utilisateur de la base de données MySQL
      set_fact:
        mysql_password: "{{ lookup('password', '/dev/null length=15 chars=ascii_letters') }}"
      no_log: yes

    - name: Créer un utilisateur de base de données
      mysql_user:
        name: "{{ mysql_username }}"
        password: "{{ mysql_password }}"
        priv: "*.*:ALL"
        host: localhost
        state: present

    - name: Copier des données d'exemple dans le système de fichiers local /tmp/
      copy:
        src: files/dump.sql
        dest: /tmp/dump.sql
    
    - name: Insérer des données d'exemple dans la table demo dans MySQL
      shell: "mysql -u {{ mysql_username }} -p{{ mysql_password }} demo < /tmp/dump.sql"

    - name: Redémarrer Apache 
      service:
        name: httpd
        state: restarted

    - name: Installer le script de connexion à la base de données 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: À des fins de démonstration

asciicast

Test

Exigences

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

Utilisation

Tester avec Ansible Molecule :

molecule test

Licence

MIT

À propos du projet

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

Installer
ansible-galaxy install infamousjoeg.provisioning
Licence
mit
Téléchargements
213
Propriétaire
Sr. DevOps Security Engineer for @cyberark