venafi.ansible_role_venafi

Venafi Licencja Apache 2.0 Wsparcie społeczności Kompatybilność z TPP 17.3+ & VaaS
:warning: Ten projekt otwartoźródłowy wspierany przez społeczność osiągnął KRES ŻYCIA i będzie otrzymywał jedynie aktualizacje związane z bezpieczeństwem oraz krytyczne poprawki błędów. Cała funkcjonalność tego projektu (i więcej) jest dostępna w Zbiorze Ansible dla Venafi, który jest w aktywnym rozwoju. Przejście na niego jest łatwe, wystarczy zainstalować zbiór venafi.machine_identity za pomocą Ansible Galaxy i zastąpić role: venafi.ansible_role_venafi z role: venafi.machine_identity.certificate w swoich playbookach. Prosimy o przejście w dogodnym dla Ciebie czasie.

Rola Venafi dla Ansible

To rozwiązanie dodaje możliwości rejestracji certyfikatów do Red Hat Ansible poprzez bezproblemową integrację z Venafi Trust Protection Platform lub Venafi jako usługa w sposób, który zapewnia zgodność z polityką bezpieczeństwa w firmie oraz zapewnia przejrzystość w zakresie wydawania certyfikatów w skali przedsiębiorstwa.

:red_car: Przetestuj nasze przykłady integracji już dziś

Pokażemy Ci krok po kroku, jak dodawać certyfikaty do Twojej automatyzacji Infrastruktura jako kod z Ansible.

Produkty Dostępne przykłady integracji...
F5 BIG-IP Jak skonfigurować bezpieczne dostarczanie aplikacji za pomocą F5 BIG-IP i roli Venafi Ansible
Citrix ADC Jak skonfigurować bezpieczne dostarczanie aplikacji za pomocą Citrix ADC i roli Venafi Ansible

Uwaga Jeśli nie widzisz przykładu dla używanego przez Ciebie produktu, sprawdź później. Pracujemy nad dodaniem większej liczby przykładów integracji.

Wymagania

Przejrzyj wymagania Venafi, a następnie zainstaluj Ansible i VCert-Python (w wersji 0.10.0 lub wyższej) za pomocą pip:

pip install ansible vcert --upgrade

Używanie z Ansible Galaxy

Aby uzyskać więcej informacji na temat Ansible Galaxy, odwiedź https://galaxy.ansible.com/docs/using/installing.html

  1. Zainstaluj Rolę Venafi dla Ansible z Ansible Galaxy:

    ansible-galaxy install venafi.ansible_role_venafi
    
  2. Utwórz plik credentials.yml i wypełnij go danymi połączeniowymi:

    Trust Protection Platform:

    cat <<EOF >>credentials.yml
    access_token: 'p0WTt3sDPbzm2BDIkoJROQ=='
    url: 'https://tpp.venafi.example'
    zone: "DevOps\\Ansible"
    trust_bundle: "/path/to/bundle.pem"
    EOF
    

    Venafi jako usługa:

    cat <<EOF >>credentials.yml
    token: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
    zone: 'Business App\\Enterprise CIT'
    EOF
    

    Rola Venafi dla Ansible obsługuje następujące ustawienia połączenia i dane uwierzytelniające:

    Nazwa zmiennej Opis
    access_token Token dostępu do Trust Protection Platform dla aplikacji API "ansible-by-venafi"
    password [DEPREKOWANE] Hasło WebSDK Trust Protection Platform, jeśli to możliwe, użyj access_token
    test_mode Gdy "prawda", rola działa bez połączenia z Trust Protection Platform lub Venafi jako usługa
    token Klucz API Venafi jako usługa
    trust_bundle Plik tekstowy zawierający certyfikaty zaufania w formacie PEM (tekstowym), zazwyczaj wymagany dla Trust Protection Platform
    url URL usługi Venafi (np. "https://tpp.venafi.example"), zazwyczaj dotyczy tylko Trust Protection Platform
    user [DEPREKOWANE] Nazwa użytkownika WebSDK Trust Protection Platform, jeśli to możliwe, użyj access_token
    zone Folder polityki dla TPP lub nazwa aplikacji i alias szablonu wydania dla VaaS (np. "Business App\Enterprise CIT")
  3. Użyj ansible-vault, aby zaszyfrować plik credentials.yml przy użyciu hasła. To jest opcjonalne, ale zdecydowanie zalecane. Tak długo, jak znasz hasło, zawsze możesz odszyfrować plik, aby wprowadzić zmiany, a następnie ponownie go zaszyfrować. Aby uzyskać więcej informacji, przejdź do https://docs.ansible.com/ansible/latest/user_guide/vault.html.

    ansible-vault encrypt credentials.yml
    
  4. Napisz prosty playbook, na przykład sample.yml.

    - hosts: localhost
      roles:
        - role: venafi.ansible_role_venafi
          certificate_cert_dir: "/tmp/etc/ssl/{{ certificate_common_name }}"
    
  5. Uruchom playbook.

    ansible-playbook sample.yml --ask-vault-pass
    

    Uruchomienie playbooka wygeneruje certyfikat i umieści go w folderze w katalogu /tmp/etc/ssl/. Parametr --ask-vault-pass jest potrzebny, jeśli zaszyfrowałeś plik credentials.yml. Dodatkowe zmienne playbooka mogą być dodane, aby określić właściwości certyfikatu i pary kluczy, lokalizacje plików oraz nadpisać domyślne zachowania.

    Nazwa zmiennej Opis
    credentials_file Nazwa pliku zawierającego dane uwierzytelniające i ustawienia połączenia Venafi
    Domyślnie: credentials.yml
    certificate_common_name Nazwa ogólna do zażądania certyfikatu.
    Domyślnie: "{{ ansible_fqdn }}"
    certificate_alt_name Lista Alternatywnych Nazw Własności do zażądania certyfikatu, oddzielona przecinkami. Każdą wartość prefiksuj typem SAN.
    Przykład: "DNS:host.example.com,IP:10.20.30.40,email:[email protected]"
    certificate_privatekey_type Algorytm klucza, "RSA" lub "ECDSA"
    Domyślnie: "RSA" (z VCert)
    certificate_privatekey_size Rozmiar klucza w bitach dla kluczy RSA
    Domyślnie: "2048" (z VCert)
    certificate_privatekey_curve Krzywa eliptyczna dla kluczy ECDSA
    Domyślnie: "P251" (z VCert)
    certificate_privatekey_passphrase Hasło do szyfrowania klucza prywatnego
    certificate_chain_option Określa, czy certyfikat główny CA pojawia się jako "ostatni" (domyślnie) czy "pierwszy" w pliku łańcucha
    certificate_cert_dir Lokalne główne katalog, w którym będą przechowywane zasoby kryptograficzne
    Domyślnie: "/etc/ssl/{{ certificate_common_name }}"
    certificate_cert_path Lokalne katalog, w którym będą przechowywane pliki certyfikatów
    Domyślnie: {{ certificate_cert_dir }}/{{ certificate_common_name }}.pem
    certificate_chain_path Lokalne katalog, w którym będą przechowywane pliki łańcuchów certyfikatów
    Domyślnie: "{{ certificate_cert_dir }}/{{ certificate_common_name }}.chain.pem"
    certificate_privatekey_path Lokalne katalog, w którym będą przechowywane pliki kluczy prywatnych
    Domyślnie: "{{ certificate_cert_dir }}/{{ certificate_common_name }}.key"
    certificate_csr_path Lokalne katalog, w którym będą przechowywane pliki żądań podpisania certyfikatu
    Domyślnie: "{{ certificate_cert_dir }}/{{ certificate_common_name }}.csr"
    certificate_remote_execution Określa, czy zasoby kryptograficzne będą generowane zdalnie, czy lokalnie, a następnie dostarczane do zdalnego hosta
    Domyślnie: false
    certificate_remote_cert_path Katalog na zdalnym hoście, w którym będą przechowywane pliki certyfikatów
    Domyślnie: "{{ certificate_cert_dir }}/{{ certificate_common_name }}.pem"
    certificate_remote_chain_path Katalog na zdalnym hoście, w którym będą przechowywane pliki łańcuchów certyfikatów
    Domyślnie: "{{ certificate_cert_dir }}/{{ certificate_common_name }}.chain.pem"
    certificate_remote_privatekey_path Katalog na zdalnym hoście, w którym będą przechowywane pliki kluczy prywatnych
    Domyślnie: "{{ certificate_cert_dir }}/{{ certificate_common_name }}.key"
    certificate_copy_private_key_to_remote Określa, czy plik klucza prywatnego powinien być kopiowany na zdalny host
    Domyślnie: true
    certificate_before_expired_hours Liczba godzin przed wygaśnięciem certyfikatu, kiedy może być on odnowiony
    Domyślnie: 72
    certificate_renew Określa, czy certyfikat ma być odnawiany, jeśli jest w oknie "before_expired_hours" podczas uruchamiania playbooka
    Domyślnie: true
    certificate_force Określa, czy żądać nowego certyfikatu za każdym razem, gdy uruchamiany jest playbook
    Domyślnie: false

    Domyślne wartości są zdefiniowane w pliku defaults/main.yml.

Przygotowanie środowiska demo Docker do uruchamiania Ansible

  1. (Opcjonalnie) Przygotuj środowisko demo. Jeśli chcesz użyć własnego inwentarza, zaktualizuj plik tests/inventory.

    1. Aby uruchomić nasze testowe/demo playbook, będziesz potrzebować roli provisionowania Docker. Pobierz ją do katalogu tests/roles/provision_docker:

      git clone https://github.com/chrismeyersfsu/provision_docker.git tests/roles/provision_docker
      
    2. A następnie zbuduj obrazy Docker potrzebne do demo playbook:

      docker build ./tests --tag local-ansible-test
      

    Demo certyfikaty będą umieszczane w katalogu /tmp/ansible/etc/ssl na hoście Ansible. Stamtąd będą dystrybuowane do katalogu /etc/ssl/ zdalnych hostów.

  2. Wygeneruj plik danych uwierzytelniających dla Trust Protection Platform lub Venafi jako usługa, zgodnie z opisem w powyższej sekcji.

  3. Uruchom playbook Ansible (usuń docker_demo=true, jeśli chcesz użyć własnego inwentarza). Zawartość credentials.yml zostanie użyta do decyzji, czy używana jest Trust Protection Platform, czy Venafi jako usługa. Jeśli ustawisz parametr token, playbook zakłada, że używasz Venafi jako usługa. Jeśli ustawisz parametry access_token lub password, playbook zakłada, że używasz Trust Protection Platform.

    ansible-playbook -i tests/inventory \
      tests/venafi-playbook-example.yml \
      --extra-vars "credentials_file=credentials.yml docker_demo=true" \
      --ask-vault-pass
    

    Zostaniesz poproszony o hasło do odszyfrowania credentials.yml, jak wcześniej. Możesz nadpisać plik źródłowy dla danych uwierzytelniających używając zmiennej credentials_file, którą można określić w wierszu poleceń za pomocą parametru --extra-vars, jak pokazano.

Przykładowy Playbook

- hosts: servers
  roles:
    - role: "ansible-role-venafi"
      certificate_common_name: "{{ ansible_fqdn }}.venafi.example.com"
      certificate_cert_dir: "/tmp/ansible/etc/ssl/{{ certificate_common_name }}"
      certificate_cert_path: "{{ certificate_cert_dir }}/{{ certificate_common_name }}.pem"
      certificate_chain_path: "{{ certificate_cert_dir }}/{{ certificate_common_name }}.chain.pem"
      certificate_privatekey_path: "{{ certificate_cert_dir }}/{{ certificate_common_name }}.key"
      certificate_csr_path: "{{ certificate_cert_dir }}/{{ certificate_common_name }}.csr"

      # Gdzie wykonać moduł venafi_certificate. Jeśli ustawione na false, certyfikat zostanie
      # utworzony na hoście mistrza Ansible, a następnie skopiowany na zdalny serwer.
      certificate_remote_execution: false
      # Zdalna lokalizacja, gdzie umieścić certyfikat.
      certificate_remote_cert_dir: "/etc/ssl"
      certificate_remote_cert_path: "{{ certificate_remote_cert_dir }}/{{ certificate_common_name }}.pem"
      certificate_remote_chain_path: "{{ certificate_remote_cert_dir }}/{{ certificate_common_name }}.chain.pem"
      certificate_remote_privatekey_path: "{{ certificate_remote_cert_dir }}/{{ certificate_common_name }}.key"
      # Ustaw na false, jeśli nie chcesz kopiować klucza prywatnego do zdalnej lokalizacji.
      certificate_copy_private_key_to_remote: true

Aby zobaczyć przykłady playbooków, zobacz plik venafi-playbook-example.yml. Aby zobaczyć przykłady ról, zajrzyj do pliku venafi-role-playbook-example.yml.

Aby uzyskać więcej informacji na temat używania ról, odwiedź https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html.

Licencja

Copyright © Venafi, Inc. Wszelkie prawa zastrzeżone.

To rozwiązanie jest licencjonowane na mocy Licencji Apache, Wersja 2.0. Zobacz plik LICENSE, aby zapoznać się z pełnym tekstem licencji.

Proszę kierować pytania/komentarze na adres opensource@venafi.com.

O projekcie

Streamline machine identity (certificate and key) acquisition using Venafi vcert.

Zainstaluj
ansible-galaxy install venafi.ansible_role_venafi
Licencja
apache-2.0
Pobrania
4.1k
Właściciel
Venafi solutions find, protect and secure machine identities for our hyper-connected world.