provisioning

Провизия

Роль Ansible для упрощения задачи добавления аккаунтов в Core Privileged Access Security (PAS) CyberArk с использованием Management API CyberArk.

Доступно на Ansible Galaxy

Требования

Ansible >= v2.5

Переменные роли

Переменная Описание Обязательно?
cyberark_api_base_url Основной URL API управления CyberArk Web Services (Пример: https://pvwa.cyberark.com) Да
cyberark_auth_type Метод аутентификации (CyberArk/LDAP/Radius/Windows) Да
cyberark_validate_certs Логическое значение для проверки SSL (да/нет) Нет
cyberark_username Имя пользователя, авторизованное через API Да
cyberark_password Пароль для авторизованного имени пользователя через API Да
cyberark_acct_name Уникальное значение "Имя" объекта учетных данных из PVWA Да
cyberark_acct_address Значение адреса объекта учетных данных из PVWA Нет
cyberark_acct_username Значение имени пользователя объекта учетных данных из PVWA Нет
cyberark_acct_password Значение пароля объекта учетных данных из PVWA Нет
cyberark_acct_platformId Платформа для управления объектом учетных данных Да
cyberark_acct_safeName Хранилище для хранения объекта учетных данных Да
cyberark_acct_secretType Тип секрета, который нужно добавить (пароль/ключ) Да
cyberark_acct_autoManagement Логическое значение для включения/выключения автоматического управления объектом учетных данных (да/нет) Нет
cyberark_acct_manualReason Причина, по которой отключается автоматическое управление объектом учетных данных Нет

Пример Плейбука

Пример развертывания стека LAMP и добавления администратора базы данных MySQL, который создается во время инициализации MySQL.

---
- hosts: localhost

  pre_tasks:
    - name: Установить Apache и PHP
      yum:
        name: ['httpd', 'php', 'php-mysql']
        state: present

    - name: Установить зависимости для веб-роли
      yum:
        name: ['git', 'wget', 'curl', 'jq', 'libsemanage-python']
        state: present

    - name: Запустить Apache
      service:
        name: httpd
        state: started
        enabled: yes

    - name: Настроить SELinux для разрешения httpd соединения с удаленной базой данных
      seboolean:
        name: httpd_can_network_connect_db
        state: true
        persistent: yes

    - name: Создать стартовую страницу index.php
      copy:
        dest: "/var/www/html/index.php"
        content: |
          <?php echo "Привет, мир!"; ?>
      
    - name: Установить пакет MariaDB
      yum:
        name: ['mariadb-server', 'MySQL-python']
        state: present

    - name: Настроить SELinux для запуска MySQL на любом порту 
      seboolean:
        name: mysql_connect_any
        state: true
        persistent: yes

    - name: Запустить службу MySQL
      service:
        name: mariadb
        state: started
        enabled: yes

    - name: Создать новую базу данных
      mysql_db:
        name: demo
        state: present
        collation: utf8_general_ci

    - name: Установить текущее имя хоста удаленной машины
      set_fact:
        mysql_address: "{{ inventory_hostname }}"

    - name: Установить имя пользователя базы данных MySQL
      set_fact:
        mysql_username: demo

    - name: Установить случайный пароль для пользователя базы данных MySQL
      set_fact:
        mysql_password: "{{ lookup('password', '/dev/null length=15 chars=ascii_letters') }}"
      no_log: yes

    - name: Создать пользователя базы данных
      mysql_user:
        name: "{{ mysql_username }}"
        password: "{{ mysql_password }}"
        priv: "*.*:ALL"
        host: localhost
        state: present

    - name: Скопировать тестовые данные в локальную файловую систему /tmp/
      copy:
        src: files/dump.sql
        dest: /tmp/dump.sql
    
    - name: Вставить тестовые данные в таблицу demo в MySQL
      shell: "mysql -u {{ mysql_username }} -p{{ mysql_password }} demo < /tmp/dump.sql"

    - name: Перезапустить Apache 
      service:
        name: httpd
        state: restarted

    - name: Установить 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: Для демонстрационных целей

asciicast

Тест

Требования

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

Использование

Тестирование с помощью Ansible Molecule:

molecule test

Лицензия

MIT

О проекте

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

Установить
ansible-galaxy install infamousjoeg/provisioning
Лицензия
mit
Загрузки
201
Владелец
Sr. DevOps Security Engineer for @cyberark