open-vault/enos/modules
Ryan Cragun deeb1ece5b
[QT-530] enos: allow-list all public IP addresses (#20304)
The security groups that allow access to remote machines in Enos
scenarios have been configured to only allow port 22 (SSH) from the
public IP address of machine executing the Enos scenario. To achieve
this we previously utilized the `enos_environment.public_ip_address`
attribute. Sometime in mid March we started seeing sporadic SSH i/o
timeout errors when attempting to execute Enos resources against SSH
transport targets. We've only ever seen this when communicating from
Azure hosted runners to AWS hosted machines.

While testing we were able to confirm that in some cases the public IP
address resolved using DNS over UDP4 to Google and OpenDNS name servers
did not match what was resolved when using the HTTPS/TCP IP address
service hosted by AWS. The Enos data source was implemented in a way
that we'd attempt resolution of a single name server and only attempt
resolving from the next if previous name server could not get a result.
We'd then allow-list that single IP address. That's a problem if we can
resolve two different public IP addresses depending our endpoint address.

This change utlizes the new `enos_environment.public_ip_addresses`
attribute and subsequent behavior change. Now the data source will
attempt to resolve our public IP address via name servers hosted by
Google, OpenDNS, Cloudflare, and AWS. We then return a unique set of
these IP addresses and allow-list all of them in our security group. It
is our hope that this resolves these i/o timeout errors that seem like
they're caused by the security group black-holing our attempted access
because the IP we resolved does not match what we're actually exiting
with.

Signed-off-by: Ryan Cragun <me@ryan.ec>
2023-04-23 16:25:32 -06:00
..
autopilot_upgrade_storageconfig
az_finder
backend_raft
build_crt
build_local
generate_secondary_token
get_local_metadata
k8s_deploy_vault
k8s_vault_verify_build_date
k8s_vault_verify_replication
k8s_vault_verify_ui
k8s_vault_verify_version
k8s_vault_verify_write_data
load_docker_image
local_kind_cluster
read_license
shutdown_multiple_nodes
shutdown_node
target_ec2_instances
target_ec2_spot_fleet
vault_agent
vault_artifactory_artifact
vault_cluster
vault_get_cluster_ips
vault_raft_remove_peer
vault_setup_perf_primary
vault_setup_perf_secondary
vault_test_ui
vault_unseal_nodes
vault_upgrade
vault_verify_agent_output
vault_verify_autopilot
vault_verify_performance_replication
vault_verify_raft_auto_join_voter
vault_verify_read_data
vault_verify_replication
vault_verify_ui
vault_verify_undo_logs
vault_verify_unsealed
vault_verify_version
vault_verify_write_data