Skip to content

Commit e15dbd7

Browse files
authored
URLs -> Secrets (canada-ca#1275)
* Alter the use of URLs throughout scanner code to make use of secrets for flexible URL support * Add default values for os.getenv()
1 parent bdc25f0 commit e15dbd7

11 files changed

Lines changed: 59 additions & 19 deletions

File tree

app/bases/knative/config/autoscan.yaml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,15 @@ spec:
3333
name: scanners
3434
key: DB_HOST
3535
- name: DB_PORT
36-
value: "5432"
36+
value: "8529"
3737
- name: DB_NAME
3838
valueFrom:
3939
secretKeyRef:
4040
name: scanners
4141
key: DB_NAME
42+
- name: SCAN_QUEUE_URL
43+
valueFrom:
44+
secretKeyRef:
45+
name: scanners
46+
key: SCAN_QUEUE_URL
4247
restartPolicy: OnFailure

app/bases/knative/config/config.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ spec:
4545
secretKeyRef:
4646
name: scanners
4747
key: DB_NAME
48+
- name: RESULT_QUEUE_URL
49+
valueFrom:
50+
secretKeyRef:
51+
name: scanners
52+
key: RESULT_QUEUE_URL
4853

4954
---
5055

@@ -145,6 +150,11 @@ spec:
145150
secretKeyRef:
146151
name: scanners
147152
key: DB_NAME
153+
- name: RESULT_QUEUE_URL
154+
valueFrom:
155+
secretKeyRef:
156+
name: scanners
157+
key: RESULT_QUEUE_URL
148158

149159
---
150160

@@ -195,6 +205,11 @@ spec:
195205
secretKeyRef:
196206
name: scanners
197207
key: DB_NAME
208+
- name: RESULT_QUEUE_URL
209+
valueFrom:
210+
secretKeyRef:
211+
name: scanners
212+
key: RESULT_QUEUE_URL
198213

199214
---
200215

app/bases/knative/config/queues.yaml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,22 @@ spec:
2121
containers:
2222
- name: scan-queue
2323
image: gcr.io/track-compliance/services/scan-queue
24+
env:
25+
- name: HTTPS_URL
26+
valueFrom:
27+
secretKeyRef:
28+
name: scanners
29+
key: HTTPS_URL
30+
- name: SSL_URL
31+
valueFrom:
32+
secretKeyRef:
33+
name: scanners
34+
key: SSL_URL
35+
- name: DNS_URL
36+
valueFrom:
37+
secretKeyRef:
38+
name: scanners
39+
key: DNS_URL
2440

2541
---
2642

@@ -47,3 +63,9 @@ spec:
4763
containers:
4864
- name: result-queue
4965
image: gcr.io/track-compliance/services/result-queue
66+
env:
67+
- name: PROCESSOR_URL
68+
valueFrom:
69+
secretKeyRef:
70+
name: scanners
71+
key: PROCESSOR_URL

services/auto-scan/autoscan.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import datetime
66
import traceback
77
from arango import ArangoClient
8-
from uuid import uuid4 as unique_id
98

109
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
1110

@@ -14,8 +13,7 @@
1413
DB_PORT = os.getenv("DB_PORT")
1514
DB_NAME = os.getenv("DB_NAME")
1615
DB_HOST = os.getenv("DB_HOST")
17-
18-
QUEUE_URL = "http://scan-queue.scanners.svc.cluster.local"
16+
QUEUE_URL = os.getenv("SCAN_QUEUE_URL", "http://scan-queue.scanners.svc.cluster.local")
1917

2018

2119
def dispatch_https(domain, client):
@@ -46,11 +44,12 @@ def dispatch_dns(domain, client):
4644
client.post(QUEUE_URL + "/dns", json=payload)
4745

4846

49-
def scan(db_host, db_name, user_name, password, http_client=requests):
47+
def scan(db_host, db_port, db_name, user_name, password, http_client=requests):
5048
logging.info("Retrieving domains for scheduled scan...")
5149
try:
5250
# Establish DB connection
53-
arango_client = ArangoClient(hosts=db_host)
51+
connection_string = f"http://{db_host}:{db_port}"
52+
arango_client = ArangoClient(hosts=connection_string)
5453
db = arango_client.db(db_name, username=user_name, password=password)
5554

5655
logging.info("Querying domains...")
@@ -80,5 +79,5 @@ def scan(db_host, db_name, user_name, password, http_client=requests):
8079
return count
8180

8281
if __name__ == "__main__":
83-
dispatched_count = scan(DB_HOST, DB_NAME, DB_USER, DB_PASS)
82+
dispatched_count = scan(DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASS)
8483
logging.info(f"Dispatched scans for {dispatched_count} domains.")

services/auto-scan/requirements.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,3 @@ pytest
22
requests>=2.18.4
33
python-arango
44
pretend
5-
uuid

services/auto-scan/tests/test_autoscan.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def test_dispatch():
2828
client_stub = stub(post=lambda url, json: None)
2929

3030
dispatched = scan(
31-
"http://testdb:8529", "test", "", "", http_client=client_stub
31+
"testdb", 8529, "test", "", "", http_client=client_stub
3232
)
3333

3434
assert dispatched == len(input_domains)

services/result-queue/result_queue.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
1616
pool = ConnectionPool(host="127.0.0.1", port=6379, db=0)
1717

18-
PROCESSOR_URL = "http://result-processor.scanners.svc.cluster.local"
18+
PROCESSOR_URL = os.getenv("PROCESSOR_URL", "http://result-processor.scanners.svc.cluster.local")
1919

2020
redis = Redis(connection_pool=pool)
2121
https_queue = Queue("https", connection=redis)

services/scan-queue/scan_queue.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
1616
pool = ConnectionPool(host="127.0.0.1", port=6379, db=0)
1717

18-
HTTPS_URL = "http://https-scanner.scanners.svc.cluster.local"
19-
SSL_URL = "http://ssl-scanner.scanners.svc.cluster.local"
20-
DNS_URL = "http://dns-scanner.scanners.svc.cluster.local"
18+
HTTPS_URL = os.getenv("HTTPS_URL", "http://https-scanner.scanners.svc.cluster.local")
19+
SSL_URL = os.getenv("SSL_URL", "http://ssl-scanner.scanners.svc.cluster.local")
20+
DNS_URL = os.getenv("DNS_URL", "http://dns-scanner.scanners.svc.cluster.local")
2121

2222
redis = Redis(connection_pool=pool)
2323
https_queue = Queue("https", connection=redis)

services/scanners/dns/dns_scanner.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@
2424

2525
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
2626

27-
QUEUE_URL = "http://result-queue.scanners.svc.cluster.local/dns"
27+
QUEUE_URL = os.getenv("RESULT_QUEUE_URL", "http://result-queue.scanners.svc.cluster.local")
2828

2929

3030
def dispatch_results(payload, client):
31-
client.post(QUEUE_URL, json=payload)
31+
client.post(QUEUE_URL + "/dns", json=payload)
3232
logging.info("Scan results dispatched to result-processor")
3333

3434

services/scanners/https/https_scanner.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@
1818

1919
MIN_HSTS_AGE = 31536000 # one year
2020

21-
QUEUE_URL = "http://result-queue.scanners.svc.cluster.local/https"
21+
QUEUE_URL = os.getenv("RESULT_QUEUE_URL", "http://result-queue.scanners.svc.cluster.local")
2222

2323

2424
def dispatch_results(payload, client):
25-
client.post(QUEUE_URL, json=payload)
25+
client.post(QUEUE_URL + "/https", json=payload)
2626
logging.info("Scan results dispatched to result-processor")
2727

2828

0 commit comments

Comments
 (0)