🎯 Definicja
Zasady konfiguracji bezpieczeństwa sieciowego (Firewall/iptables) oraz wymagania dotyczące fizycznej sieci (opóźnienia, routing) dla instalacji Ataccama ONE.
🔑 Kluczowe punkty
- Zarządzanie przez Ansible: Zalecanym sposobem konfiguracji systemowego firewalla (iptables) jest automatyzacja Ansible (
firewall_manage: true). - Niskie opóźnienia (Latency): System jest wrażliwy na opóźnienia sieciowe między komponentami.
- Porty: Domyślne polityki otwierają tylko niezbędne porty (SSH, HTTP/S, porty usług). Wszystko inne jest blokowane (DROP).
📚 Szczegółowe wyjaśnienie
Ataccama ONE w instalacjach On-Prem/IaaS przejmuje kontrolę nad firewallem systemowym węzłów.
Jeśli klient posiada własne rozwiązania (np. UFW, firewalld zarządzane ręcznie), konflikt jest nieunikniony. Ansible Ataccamy spróbuje je wyłączyć i zastąpić regułami iptables.
Można to wyłączyć (firewall_manage: false), ale wtedy to klient bierze pełną odpowiedzialność za otwarcie setek portów komunikacyjnych (gRPC, Http) między mikroserwisami.
Dla środowisk chmurowych (Azure/AWS), oprócz systemowego firewalla, należy pamiętać o Security Groups / NSG, które muszą przepuszczać ruch.
💡 Przykład zastosowania
Otwarcie niestandardowego portu (np. dla integracji zewnętrznej) w vars.yml:
firewall_custom_rules:
- port: 12345
proto: tcp
source: 10.0.0.0/8📌 Źródła
👽 Brudnopis
-
When configuring the network, consider:
- Interconnection: Target servers must be able to access each other directly using TCP. While a single subnet is recommended, it’s not mandatory.
- Latency: Higher network latencies between Ataccama ONE components or data sources will significantly impact performance.
- IP Addressing and Licenses: Ataccama licenses are tied to server IP addresses. Consider long-term plans to avoid issues if servers are migrated.
-
As part of the Ansible installation process, a Linux firewall (iptables) can be automatically configured if the
firewall_manageoption is set to true. -
In this case, a firewall for each component is installed as an Ansible job immediately following the component installation.
-
The automatically configured firewall permits access from specific sources to:
- SSH (for management, upgrades, and debugging from any IP address).
- TCP ports of installed services (by default, access is limited for specific sources).
- HTTP and HTTPS ports of the frontend server (access allowed from any IP address).
- All ICMP services (required for proper TCP functioning).
- Packets of all other protocols and to all other ports are discarded (dropped).
- You can also open additional ports, with per-host granularity and filtering of connection sources.
-
The following customer-side requirements must be fulfilled:
- SSL certificates must be prepared in advance.
- A DNS zone must be prepared in Azure with a public IP pointing to the web server.
- Records about Nginx must exist in the
/etc/hostsfile on every node, pointing to the private IP of the VM.
-
Currently, customer-configured firewalls are not supported.
-
It is necessary to allow Ansible to configure and manage an iptables-based firewall.
-
Ansible can remove previously installed UFW and firewalld.
-
If any other unsupported firewall manager is in use, the customer must remove it before starting the installation process.
-
You can define custom firewall rules if needed.
-
For example, to open ports 11111 and 12345 on all target servers, you would set:
-
A range of ports can also be opened.
-
For example, to open ports 8080 to 8089 (inclusive):
-
If only specific hosts require custom open ports, it’s recommended to set this variable only for those respective hosts or groups.
-
This overrides the global setting in
group_vars/all/vars.yml. -
For instance, in
hosts.yml, to open port 33333 on one of the three application servers (as an illustration): -
When custom rules are set in multiple locations, group settings override global settings, and host settings override all other settings.
-
More complex rules can be configured by referring to
roles/firewall-rules/README.md. -
Firewall management can also be completely disabled by setting
firewall_manage: false. -
In this case, an appropriate firewall must be configured beforehand.
-
It is not recommended to manage the firewall on target servers using Ansible nor to enforce additional rules via custom rules or at the network’s edge due to strict configuration.
-
The following network connections must be allowed at the network edge:
- Outgoing connections to all relevant data sources.
- Incoming connections from users to the frontend server (ports 80 and 443).
- Outgoing connections to the NTP servers.
-
All other connections can be restricted.
-
Every target server must have a hostname that is resolvable by all other targets, including the Ansible controller.
-
Using IP addresses to identify hosts is not supported.
-
Users access the server by connecting to the frontend.
-
Individual services are identified by their hostnames.
-
All hostnames must belong to a single domain (e.g.,
one.domain.com). -
They must also be resolvable by all target servers and point to the frontend server.