[ English | русский | Deutsch | 한국어 (대한민국) | English (United Kingdom) | Indonesia | español | français ]
Pengaturan keamanan¶
Bab ini berisi informasi untuk mengonfigurasi pengaturan keamanan spesifik untuk cloud yang dimungkinkan oleh OpenStack Anda.
Untuk memahami desain keamanan, silakan lihat Keamanan.
[ English | русский | Deutsch | 한국어 (대한민국) | English (United Kingdom) | Indonesia | español | français ]
Mengamankan layanan dengan sertifikat SSL¶
OpenStack Security Guide merekomendasikan untuk menyediakan komunikasi yang aman antara berbagai layanan dalam penyebaran OpenStack. Proyek OpenStack-Ansible saat ini menawarkan kemampuan untuk mengonfigurasi sertifikat SSL untuk komunikasi aman antara layanan:
All public endpoints reside behind haproxy, resulting in the only certificate management for externally visible https services are those for haproxy. Certain internal services such as RabbitMQ also require proper SSL configuration.
Saat menggunakan dengan OpenStack-Ansible, Anda bisa menggunakan sertifikat yang ditandatangani sendiri yang dihasilkan selama proses penyebaran atau memberikan sertifikat SSL, kunci, dan sertifikat CA dari otoritas sertifikat tepercaya Anda sendiri. Lingkungan yang sangat aman menggunakan sertifikat terpercaya, user-provided (disediakan pengguna) untuk sebanyak mungkin layanan.
Catatan
Lakukan semua konfigurasi sertifikat SSL dalam file /etc/openstack_deploy/user_variables.yml
. Jangan mengedit playbook atau role itu sendiri.
Openstack-Ansible uses an ansible role ansible_role_pki as a general tool to manage and install self-signed and user provided certificates.
Sertifikat yang ditandatangani sendiri (self-signed certificate)¶
Self-signed certificates enable you to start quickly and encrypt data in transit. However, they do not provide a high level of trust for public endpoints in highly secure environments. By default, self-signed certificates are used in OpenStack-Ansible. When self-signed certificates are used, certificate verification is automatically disabled.
Self-signed certificates can play an important role in securing internal services within the Openstack-Ansible deployment, as they can only be issued by the private CA associated with the deployment. Using mutual TLS between backend services such as RabbitMQ and MariaDB with self-signed certificates and a robust CA setup can ensure that only correctly authenticated clients can connect to these internal services.
Generating and regenerating self-signed certificate authorities¶
A self-signed certificate authority is generated on the deploy host during the first run of the playbook.
To regenerate the certificate authority you must set the
openstack_pki_regen_ca
variable to either the name of the root CA
or intermediate CA you wish or regenerate, or to true
to regenerate
all self-signed certificate authorities.
# openstack-ansible -e "openstack_pki_regen_ca=ExampleCorpIntermediate" certificate-authority.yml
Take particular care not to regenerate Root or Intermediate certificate authorities in a way that may invalidate existing server certificates in the deployment. It may be preferable to create new Intermediate CA certificates rather than regenerate existing ones in order to maintain existing chains of trust.
Membuat dan membuat ulang sertifikat yang ditandatangani sendiri (self-signed certificate)¶
Sertifikat yang ditandatangani sendiri dibuat untuk setiap layanan selama menjalankan pertama dari playbook.
To generate a new self-signed certificate for a service, you must set
the <servicename>_pki_regen_cert
variable to true in one of the
following ways:
Untuk memaksa sertifikat yang ditandatangani sendiri untuk dibuat ulang, Anda bisa meneruskan variabel ke
openstack-ansible
pada baris perintah:# openstack-ansible -e "haproxy_pki_regen_cert=true" haproxy-install.yml
To force a self-signed certificate to regenerate with every playbook run, set the appropriate regeneration option to
true
. For example, if you have already run thehaproxy
playbook, but you want to regenerate the self-signed certificate, set thehaproxy_pki_regen_cert
variable totrue
in the/etc/openstack_deploy/user_variables.yml
file:haproxy_pki_regen_cert: true
User-provided certificate (sertifikat yang disediakan pengguna)¶
Untuk kepercayaan tambahan di lingkungan yang sangat aman, Anda dapat memberikan sertifikat SSL, kunci, dan sertifikat CA Anda sendiri. Memperoleh sertifikat dari otoritas sertifikat tepercaya berada di luar ruang lingkup dokumen ini, tetapi bagian Certificate Management dari Linux Documentation Project menjelaskan cara membuat otoritas sertifikat Anda sendiri dan menandatangani sertifikat.
Gunakan proses berikut untuk menggunakan sertifikat SSL yang disediakan pengguna di OpenStack-Ansible:
Salin file sertifikat SSL, kunci, dan CA Anda ke host penyebaran.
Tentukan path ke sertifikat SSL, kunci, dan sertifikat CA Anda di file
/etc/openstack_deploy/user_variables.yml
.Jalankan playbook untuk layanan itu.
Contoh HAProxy¶
Variabel yang akan ditetapkan yang menyediakan jalur pada deployment node ke sertifikat untuk konfigurasi HAProxy adalah:
haproxy_user_ssl_cert: /etc/openstack_deploy/ssl/example.com.crt
haproxy_user_ssl_key: /etc/openstack_deploy/ssl/example.com.key
haproxy_user_ssl_ca_cert: /etc/openstack_deploy/ssl/ExampleCA.crt
Contoh RabbitMQ¶
Untuk menggunakan sertifikat yang disediakan pengguna untuk RabbitMQ, salin sertifikat ke host penyebaran, edit file /etc/openstack_deploy/user_variables.yml
dan tetapkan tiga variabel berikut:
rabbitmq_user_ssl_cert: /etc/openstack_deploy/ssl/example.com.crt
rabbitmq_user_ssl_key: /etc/openstack_deploy/ssl/example.com.key
rabbitmq_user_ssl_ca_cert: /etc/openstack_deploy/ssl/ExampleCA.crt
Kemudian, jalankan playbook untuk menerapkan sertifikat:
# openstack-ansible rabbitmq-install.yml
Playbook menyebarkan sertifikat SSL, kunci, dan sertifikat CA yang disediakan pengguna ke setiap container RabbitMQ.
Prosesnya identik untuk layanan lain. Ganti rabbitmq dalam variabel konfigurasi sebelumnya dengan horizon, haproxy, atau keystone, dan kemudian jalankan playbook untuk layanan itu untuk menggunakan sertifikat yang disediakan pengguna ke layanan tersebut.
Sertifikat LetsEncrypt¶
Peran HAProxy yang didukung mendukung penggunaan LetsEncrypt untuk secara otomatis menggunakan sertifikat SSL tepercaya untuk public endpoint. Setiap server HAProxy secara individual akan meminta sertifikat LetsEncrypt.
Tantangan jenis HTTP-01 digunakan oleh certbot untuk menyebarkan sertifikat sehingga diperlukan titik akhir publik yang dapat diakses langsung di internet.
Penyebaran sertifikat menggunakan LetsEncrypt telah divalidasi untuk openstack-ansible menggunakan Ubuntu Bionic. Distribusi lain harus berfungsi tetapi tidak diuji.
Untuk menggunakan sertifikat dengan LetsEncrypt, tambahkan berikut ini ke /etc/openstack_deploy/user_variables.yml
untuk mengaktifkan fungsi letsencrypt dalam peran yang dimungkinkan haproxy, dan untuk membuat layanan backend baru yang disebut letsencrypt
ke layanan HTTP- 01 permintaan tantangan.
haproxy_ssl: true
haproxy_ssl_letsencrypt_enable: True
haproxy_ssl_letsencrypt_install_method: "distro"
haproxy_ssl_letsencrypt_email: "email.address@example.com"
If you don't have horizon deployed, you will need to define dummy service that will listen on 80 and 443 ports and will be used for acme-challenge, whose backend is certbot on the haproxy host:
haproxy_extra_services:
# the external facing service which serves the apache test site, with a acl for LE requests
- service:
haproxy_service_name: certbot
haproxy_redirect_http_port: 80 #redirect port 80 to port ssl
haproxy_redirect_scheme: "https if !{ ssl_fc } !{ path_beg /.well-known/acme-challenge/ }" #redirect all non-ssl traffic to ssl except acme-challenge
haproxy_port: 443
haproxy_frontend_acls: "{{ haproxy_ssl_letsencrypt_acl }}" #use a frontend ACL specify the backend to use for acme-challenge
haproxy_ssl: True
haproxy_backend_nodes: #apache is running on locally on 127.0.0.1:80 serving a dummy site
- name: local-test-service
ip_addr: 127.0.0.1
haproxy_balance_type: http
haproxy_backend_port: 80
haproxy_backend_options:
- "httpchk HEAD /" # request to use for health check for the example service
[ English | русский | Deutsch | 한국어 (대한민국) | English (United Kingdom) | Indonesia | español | français ]
Menerapkan ansible-hardening¶
Role ansible-hardening
berlaku untuk host fisik dalam penyebaran OpenStack-Ansible yang beroperasi sebagai semua jenis node, infrastruktur, atau komputasi. Secara default, role diaktifkan. Anda dapat menonaktifkannya dengan mengubah nilai variabel apply_security_hardening
dalam file user_variables.yml
menjadi false
:
apply_security_hardening: false
Anda dapat menerapkan konfigurasi pengerasan keamanan untuk lingkungan yang ada atau mengaudit lingkungan dengan menggunakan playbook yang disediakan dengan OpenStack-Ansible:
# Apply security hardening configurations
openstack-ansible security-hardening.yml
# Perform a quick audit by using Ansible's check mode
openstack-ansible --check security-hardening.yml
Untuk informasi lebih lanjut tentang konfigurasi keamanan, lihat dokumentasi security hardening role .