Secure ingresses
To limit who can reach an Ingress (for example /magnolia/.admincentral) and to keep crawlers off unpublished content, set an IP allow list, basic auth, and the robots header on the MgnlIngress.
Leave ingress.enabled off in values.yml. Field names are in Map UI fields to manifest.
Instructions
-
Connect to your DX Cloud Kubernetes cluster with the correct
kubeconfig. -
Create an
HTPASSWDfile.
# Create HTPASSWD File
$ htpasswd -c auth myadmin
New password:
Re-type new password:
Adding password for user myadmin
- Create a Secret from that file in the same namespace as the Ingress.
$ kubectl create -n dev secret generic basic-auth --from-file=auth
secret/basic-auth created
- On the
MgnlIngress, set the allow list, basic auth, and the robots header.
spec:
whitelistIps:
- 37.120.189.19/32 <1>
- 2a03:4000:6:b665::46/128
- 23.235.32.0/20
- 43.249.72.0/22
- 103.244.50.0/24
- 103.245.222.0/23
- 103.245.224.0/24
- 104.156.80.0/20
- 140.248.64.0/18
- 140.248.128.0/17
- 146.75.0.0/17
- 151.101.0.0/16
- 157.52.64.0/18
- 167.82.0.0/17
- 167.82.128.0/20
- 167.82.160.0/20
- 167.82.224.0/20
- 172.111.64.0/18
- 185.31.16.0/22
- 199.27.72.0/21
- 199.232.0.0/16
nginxOptions:
disableRobots: true <2>
basicAuth:
enabled: true <3>
basicAuthMessage: "PLEASE LOGIN:" <4>
basicAuthSecret: basic-auth <5>
Allow List IPs. The ranges after the first two are Fastly. Fastly cannot reach the Ingress without them.
Disable robots header. Sends X-Robots-Tag: noindex, nofollow.
Realm message shown in the browser prompt.
Name of the Secret from step 3. The Secret must be in the same namespace as the Ingress.
Test Basic Auth and Whitelisting
Run the following command:
$ curl ifconfig.me
87.123.205.103%
$ curl https://dev.azurepaas.magnolia-platform.com
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx</center>
</body>
</html>
Require authentication from permitted IP range
- Run the following command:
$ curl ifconfig.me
37.120.189.19%
$ curl https://dev.azurepaas.magnolia-platform.com
<html>
<head><title>401 Authorization Required</title></head>
<body>
<center><h1>401 Authorization Required</h1></center>
<hr><center>nginx</center>
</body>
</html>
- Authenticate via Basic Auth using your stored credentials:
$ curl https://dev.azurepaas.magnolia-platform.com -u myadmin:myadmin