security-groups.tf 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. # Rather than pass in the aws security group, we just look it up. This will
  2. # probably be useful other places, as well.
  3. data "aws_security_group" "typical-host" {
  4. name = "typical-host"
  5. vpc_id = var.vpc_id
  6. }
  7. data "aws_security_group" "aws_endpoints" {
  8. name = "aws_endpoints"
  9. vpc_id = var.vpc_id
  10. }
  11. # ajp port: 8009
  12. # http: 8080
  13. # https: 8443
  14. # mgmt-http: 9990
  15. # mgmt-https: 9993
  16. # txn-recovery-environment: 4712
  17. # txn-status-manager: 4713
  18. resource "aws_security_group" "instance" {
  19. name = "RHSSO"
  20. description = "RHSSO Instances"
  21. # checkov:skip=CKV2_AWS_5: this SG is attached to RHSSO
  22. vpc_id = var.vpc_id
  23. tags = merge(local.standard_tags, var.tags)
  24. }
  25. #----------------------------------------------------------------------------
  26. # Ingress
  27. #----------------------------------------------------------------------------
  28. resource "aws_security_group_rule" "cluster-connectivity-ingress" {
  29. type = "ingress"
  30. description = "Receive any from other cluster members"
  31. from_port = -1
  32. to_port = -1
  33. protocol = -1
  34. security_group_id = aws_security_group.instance.id
  35. source_security_group_id = aws_security_group.instance.id
  36. }
  37. #----------------------------------------------------------------------------
  38. # Egress
  39. #----------------------------------------------------------------------------
  40. resource "aws_security_group_rule" "cluster-connectivity-egress" {
  41. type = "egress"
  42. description = "send any to other cluster members"
  43. from_port = -1
  44. to_port = -1
  45. protocol = -1
  46. security_group_id = aws_security_group.instance.id
  47. source_security_group_id = aws_security_group.instance.id
  48. }
  49. resource "aws_security_group_rule" "outbound_http" {
  50. type = "egress"
  51. description = "HTTP - Outbound - CRL Lookups go direct"
  52. from_port = 80
  53. to_port = 80
  54. protocol = "tcp"
  55. security_group_id = aws_security_group.instance.id
  56. cidr_blocks = ["0.0.0.0/0"] # tfsec:ignore:aws-vpc-no-public-egress-sgr
  57. }
  58. #resource "aws_security_group_rule" "instance-http-in" {
  59. # description = ""
  60. # type = "ingress"
  61. # from_port = "80"
  62. # to_port = "80"
  63. # protocol = "tcp"
  64. # cidr_blocks = [ "0.0.0.0/0" ]
  65. # security_group_id = aws_security_group.instance.id
  66. #}
  67. #
  68. #resource "aws_security_group_rule" "instance-https-in" {
  69. # description = ""
  70. # type = "ingress"
  71. # from_port = "443"
  72. # to_port = "443"
  73. # protocol = "tcp"
  74. # cidr_blocks = [ "0.0.0.0/0" ]
  75. # security_group_id = aws_security_group.instance.id
  76. #}
  77. #
  78. #resource "aws_security_group_rule" "instance-ajp-in" {
  79. # description = ""
  80. # type = "ingress"
  81. # from_port = "8009"
  82. # to_port = "8009"
  83. # protocol = "tcp"
  84. # cidr_blocks = [ "0.0.0.0/0" ]
  85. # security_group_id = aws_security_group.instance.id
  86. #}
  87. #----------------------------------------------------------------------------
  88. # Ingress
  89. #----------------------------------------------------------------------------
  90. resource "aws_security_group_rule" "instance-alt-http-in-from-access" {
  91. type = "ingress"
  92. description = "HTTP 8080 - Inbound - from access"
  93. from_port = "8080"
  94. to_port = "8080"
  95. protocol = "tcp"
  96. cidr_blocks = local.cidr_map["vpc-access"]
  97. security_group_id = aws_security_group.instance.id
  98. }
  99. #resource "aws_security_group_rule" "instance-alt-http-in-from-elb" {
  100. # description = "Alt HTTP from ELB"
  101. # type = "ingress"
  102. # from_port = "8080"
  103. # to_port = "8080"
  104. # protocol = "tcp"
  105. # security_group_id = aws_security_group.instance.id
  106. # source_security_group_id = aws_security_group.elb_external.id
  107. #}
  108. resource "aws_security_group_rule" "instance-alt-https-in-from-access" {
  109. type = "ingress"
  110. description = "HTTPS 8443 - Inbound - from access"
  111. from_port = "8443"
  112. to_port = "8443"
  113. protocol = "tcp"
  114. cidr_blocks = local.cidr_map["vpc-access"]
  115. security_group_id = aws_security_group.instance.id
  116. }
  117. resource "aws_security_group_rule" "instance-alt-https-in-from-nlb" {
  118. type = "ingress"
  119. description = "HTTPS 8443 - Inbound - from Internet"
  120. from_port = "8443"
  121. to_port = "8443"
  122. protocol = "tcp"
  123. cidr_blocks = ["0.0.0.0/0"] # tfsec:ignore:aws-vpc-no-public-ingress-sgr
  124. security_group_id = aws_security_group.instance.id
  125. }
  126. resource "aws_security_group_rule" "instance-mgmt-in-from-access" {
  127. type = "ingress"
  128. description = "HTTPS - Inbound - Management from Access"
  129. from_port = "9990"
  130. to_port = "9990"
  131. protocol = "tcp"
  132. cidr_blocks = local.cidr_map["vpc-access"]
  133. security_group_id = aws_security_group.instance.id
  134. }
  135. #----------------------------------------------------------------------------
  136. # Egress
  137. #----------------------------------------------------------------------------
  138. resource "aws_security_group_rule" "instance-db-outbound" {
  139. type = "egress"
  140. description = "Postgres - Outbound"
  141. from_port = "5432"
  142. to_port = "5432"
  143. protocol = "tcp"
  144. security_group_id = aws_security_group.instance.id
  145. source_security_group_id = aws_security_group.rhsso_rds_sg.id
  146. }
  147. #resource "aws_security_group_rule" "instance-mgmt-http-in" {
  148. # description = ""
  149. # type = "ingress"
  150. # from_port = "9990"
  151. # to_port = "9990"
  152. # protocol = "tcp"
  153. # cidr_blocks = [ "0.0.0.0/0" ]
  154. # security_group_id = aws_security_group.instance.id
  155. #}
  156. #
  157. #resource "aws_security_group_rule" "instance-mgmt-https-in" {
  158. # description = ""
  159. # type = "ingress"
  160. # from_port = "9993"
  161. # to_port = "9993"
  162. # protocol = "tcp"
  163. # cidr_blocks = [ "0.0.0.0/0" ]
  164. # security_group_id = aws_security_group.instance.id
  165. #}
  166. #
  167. #resource "aws_security_group_rule" "instance-txn-in" {
  168. # description = ""
  169. # type = "ingress"
  170. # from_port = "4712"
  171. # to_port = "4713"
  172. # protocol = "tcp"
  173. # cidr_blocks = [ "0.0.0.0/0" ]
  174. # security_group_id = aws_security_group.instance.id
  175. #}
  176. #
  177. ## lock down before production, but I couldn't get letsencrypt to work with the proxy
  178. #resource "aws_security_group_rule" "instance-all-out" {
  179. # description = ""
  180. # type = "egress"
  181. # from_port = "-1"
  182. # to_port = "-1"
  183. # protocol = "-1"
  184. # cidr_blocks = [ "0.0.0.0/0" ]
  185. # security_group_id = aws_security_group.instance.id
  186. #}