infamousjoeg.provisioning

配置

一个 Ansible 角色,用于简化将账户集成到 CyberArk 的核心特权访问安全(PAS)中的任务,使用 CyberArk 的管理 API。

在 Ansible Galaxy 上可用

要求

Ansible >= v2.5

角色变量

变量 描述 必需?
cyberark_api_base_url CyberArk Web 服务管理 API 的基础 URL(示例: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: 安装 Web 角色特定依赖项
      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 "Hello World!"; ?>
      
    - 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: 将示例数据插入 MySQL 中的 demo 
      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
下载
213
拥有者
Sr. DevOps Security Engineer for @cyberark