infamousjoeg.provisioning

Bereitstellung

Eine Ansible-Rolle, die die Aufgabe erleichtert, Konten in CyberArk's Core Privileged Access Security (PAS) mithilfe der CyberArk Management API anzulegen.

Verfügbar auf Ansible Galaxy

Anforderungen

Ansible >= v2.5

Rollenvariablen

Variable Beschreibung Erforderlich?
cyberark_api_base_url Die Basis-URL der CyberArk Web Services Management API (Beispiel: https://pvwa.cyberark.com) Ja
cyberark_auth_type Die zu verwendende Authentifizierungsmethode (CyberArk/LDAP/Radius/Windows) Ja
cyberark_validate_certs Boolean-Wert zur Validierung von SSL (ja/nein) Nein
cyberark_username API-autorisierter Benutzername Ja
cyberark_password Passwort des API-autorisierter Benutzers Ja
cyberark_acct_name Eindeutiger "Name"-Wert des Anmeldeinformationsobjekts aus PVWA Ja
cyberark_acct_address Adresswert des Anmeldeinformationsobjekts aus PVWA Nein
cyberark_acct_username Benutzername des Anmeldeinformationsobjekts aus PVWA Nein
cyberark_acct_password Passwortwert des Anmeldeinformationsobjekts aus PVWA Nein
cyberark_acct_platformId Plattform zur Verwaltung des Anmeldeinformationsobjekts Ja
cyberark_acct_safeName Safe, in dem das Anmeldeinformationsobjekt gespeichert werden soll Ja
cyberark_acct_secretType Der Typ des Anmeldegeheimnisses, das angelegt wird (Passwort/Schlüssel) Ja
cyberark_acct_autoManagement Boolean-Wert zur Aktivierung/Deaktivierung der automatischen Verwaltung des Anmeldeinformationsobjekts (ja/nein) Nein
cyberark_acct_manualReason Grund, warum die automatische Verwaltung des Anmeldeinformationsobjekts deaktiviert wird Nein

Beispiel-Playbook

Ein Beispiel zur Bereitstellung eines LAMP-Stacks und zur Anlegung des MySQL-Datenbankadministrators, der während der Initialisierung von MySQL erstellt wird.

---
- hosts: localhost

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

    - name: Webrollen-spezifische Abhängigkeiten installieren
      yum:
        name: ['git', 'wget', 'curl', 'jq', 'libsemanage-python']
        state: present

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

    - name: SELinux so konfigurieren, dass httpd Verbindung zur Remote-Datenbank zulässt
      seboolean:
        name: httpd_can_network_connect_db
        state: true
        persistent: yes

    - name: index.php Startseite erstellen
      copy:
        dest: "/var/www/html/index.php"
        content: |
          <?php echo "Hallo Welt!"; ?>
      
    - name: MariaDB-Paket installieren
      yum:
        name: ['mariadb-server', 'MySQL-python']
        state: present

    - name: SELinux so konfigurieren, dass MySQL auf jedem Port gestartet werden kann 
      seboolean:
        name: mysql_connect_any
        state: true
        persistent: yes

    - name: MySQL-Dienst starten
      service:
        name: mariadb
        state: started
        enabled: yes

    - name: Eine neue Datenbank erstellen
      mysql_db:
        name: demo
        state: present
        collation: utf8_general_ci

    - name: Fakt mit dem aktuellen Hostnamen der Remote-Maschine setzen
      set_fact:
        mysql_address: "{{ inventory_hostname }}"

    - name: Fakt mit dem MySQL-Datenbank-Benutzernamen setzen
      set_fact:
        mysql_username: demo

    - name: Fakt mit einem randomisierten Passwort für den MySQL-Datenbank-Benutzer setzen
      set_fact:
        mysql_password: "{{ lookup('password', '/dev/null length=15 chars=ascii_letters') }}"
      no_log: yes

    - name: Einen Datenbankbenutzer erstellen
      mysql_user:
        name: "{{ mysql_username }}"
        password: "{{ mysql_password }}"
        priv: "*.*:ALL"
        host: localhost
        state: present

    - name: Beispieldaten in das lokale Dateisystem /tmp/ kopieren
      copy:
        src: files/dump.sql
        dest: /tmp/dump.sql
    
    - name: Beispieldaten in die Demo-Tabelle in MySQL einfügen
      shell: "mysql -u {{ mysql_username }} -p{{ mysql_password }} demo < /tmp/dump.sql"

    - name: Apache neu starten 
      service:
        name: httpd
        state: restarted

    - name: PHP-Skript zur Datenbankverbindung db.php installieren
      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: nein
      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: passwort
      cyberark_acct_autoManagement: nein
      cyberark_acct_manualReason: Zu Demozwecken

Test

Anforderungen

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

Verwendung

Testen mit Ansible Molecule:

molecule test

Lizenz

MIT

Über das Projekt

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

Installieren
ansible-galaxy install infamousjoeg.provisioning
GitHub Repository
Lizenz
mit
Downloads
213
Besitzer
Sr. DevOps Security Engineer for @cyberark