infamousjoeg.provisioning

Provisions

Rola Ansible, która ułatwia wprowadzenie kont do CyberArk's Core Privileged Access Security (PAS) za pomocą CyberArk's Management API.

Dostępne na Ansible Galaxy

Wymagania

Ansible >= v2.5

Zmienne Roli

Zmienna Opis Wymagana?
cyberark_api_base_url Podstawowy adres URL CyberArk Web Services Management API (Przykład: https://pvwa.cyberark.com) Tak
cyberark_auth_type Metoda autoryzacji do użycia (CyberArk/LDAP/Radius/Windows) Tak
cyberark_validate_certs Wartość logiczna do walidacji SSL (tak/nie) Nie
cyberark_username Użytkownik autoryzowany do API Tak
cyberark_password Hasło użytkownika autoryzowanego do API Tak
cyberark_acct_name Unikalna wartość "Nazwa" obiektu poświadczeń z PVWA Tak
cyberark_acct_address Wartość adresu obiektu poświadczeń z PVWA Nie
cyberark_acct_username Wartość nazwy użytkownika obiektu poświadczeń z PVWA Nie
cyberark_acct_password Wartość hasła obiektu poświadczeń z PVWA Nie
cyberark_acct_platformId Platforma do zarządzania obiektem poświadczeń Tak
cyberark_acct_safeName Miejsce przechowywania obiektu poświadczeń Tak
cyberark_acct_secretType Typ tajemnicy, która jest wprowadzana (hasło/klucz) Tak
cyberark_acct_autoManagement Wartość logiczna do włączenia/wyłączenia automatycznego zarządzania obiektem poświadczeń (tak/nie) Nie
cyberark_acct_manualReason Powód, dla którego automatyczne zarządzanie jest wyłączone dla obiektu poświadczeń Nie

Przykładowy Playbook

Przykład wdrożenia stosu LAMP i wprowadzenia administratora bazy danych MySQL, który jest tworzony podczas inicjalizacji MySQL.

---
- hosts: localhost

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

    - name: Zainstaluj zależności specyficzne dla roli Web
      yum:
        name: ['git', 'wget', 'curl', 'jq', 'libsemanage-python']
        state: present

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

    - name: Skonfiguruj SELinux, aby umożliwić httpd połączenie z zdalną bazą danych
      seboolean:
        name: httpd_can_network_connect_db
        state: true
        persistent: yes

    - name: Utwórz stronę startową index.php
      copy:
        dest: "/var/www/html/index.php"
        content: |
          <?php echo "Hello World!"; ?>
      
    - name: Zainstaluj pakiet MariaDB
      yum:
        name: ['mariadb-server', 'MySQL-python']
        state: present

    - name: Skonfiguruj SELinux do uruchamiania MySQL na dowolnym porcie 
      seboolean:
        name: mysql_connect_any
        state: true
        persistent: yes

    - name: Uruchom usługę MySQL
      service:
        name: mariadb
        state: started
        enabled: yes

    - name: Utwórz nową bazę danych
      mysql_db:
        name: demo
        state: present
        collation: utf8_general_ci

    - name: Ustaw fakt z aktualną nazwą hosta zdalnej maszyny
      set_fact:
        mysql_address: "{{ inventory_hostname }}"

    - name: Ustaw fakt z nazwą użytkownika bazy danych MySQL
      set_fact:
        mysql_username: demo

    - name: Ustaw fakt z losowym hasłem dla użytkownika bazy danych MySQL
      set_fact:
        mysql_password: "{{ lookup('password', '/dev/null length=15 chars=ascii_letters') }}"
      no_log: yes

    - name: Utwórz użytkownika bazy danych
      mysql_user:
        name: "{{ mysql_username }}"
        password: "{{ mysql_password }}"
        priv: "*.*:ALL"
        host: localhost
        state: present

    - name: Skopiuj przykładowe dane do lokalnego systemu plików /tmp/
      copy:
        src: files/dump.sql
        dest: /tmp/dump.sql
    
    - name: Wstaw przykładowe dane do tabeli demo w MySQL
      shell: "mysql -u {{ mysql_username }} -p{{ mysql_password }} demo < /tmp/dump.sql"

    - name: Uruchom ponownie Apache 
      service:
        name: httpd
        state: restarted

    - name: Zainstaluj skrypt PHP do połączenia z bazą danych 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: Dla celów demonstracyjnych

Test

Wymagania

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

Użycie

Testuj przy użyciu Ansible Molecule:

molecule test

Licencja

MIT

O projekcie

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

Zainstaluj
ansible-galaxy install infamousjoeg.provisioning
Licencja
mit
Pobrania
213
Właściciel
Sr. DevOps Security Engineer for @cyberark