Skip to content

Commit d1d1cfd

Browse files
authored
Enable DRKey everywhere (#403)
* drkey is no longer optional. The SD configuration requires a key DB. The CS configuration requires a key DB, certificate and key file. Additionally, the "colibri" delegation secret is allowed for requests coming from any CO service IP. Bump CONFIG_GEN_VERSION. * update test data
1 parent 83fa905 commit d1d1cfd

File tree

9 files changed

+104
-13
lines changed

9 files changed

+104
-13
lines changed

scionlab/config_tar.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
# the scionlab-config.json manifest file in the configuration tar ball.
3535
# This version number should be incremented whenever code changes globally affect the generated
3636
# configuration of hosts.
37-
CONFIG_GEN_VERSION = 15
37+
CONFIG_GEN_VERSION = 16
3838

3939

4040
def generate_user_as_config_tar(user_as, archive):

scionlab/scion/config.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from collections import OrderedDict
1818

1919
from scionlab.models.core import Service
20+
from scionlab.models.pki import Key
2021
from scionlab.models.trc import TRC
2122
from scionlab.scion.topology import TopologyInfo
2223

@@ -315,6 +316,20 @@ def build_cs_conf(self, service):
315316
'quic': {
316317
'address': _join_host_port(service.host.internal_ip, CS_QUIC_PORT),
317318
},
319+
'drkey': {
320+
'drkey_db': {
321+
'connection': '%s.drkey.db' % os.path.join(self.var_dir, service.instance_name),
322+
},
323+
'cert_file': os.path.join(self.config_dir, 'crypto', 'as', service.AS
324+
.certificates_latest().get(key__usage=Key.CP_AS)
325+
.filename()),
326+
'key_file': os.path.join(self.config_dir, 'crypto', 'as', 'cp-as.key'),
327+
'delegation': {
328+
# the internal IP of all CO services has rights to derive DS "colibri":
329+
'colibri': [str(s.host.internal_ip) for s in service.AS.services
330+
.filter(type=Service.CO).select_related('host')],
331+
},
332+
},
318333
})
319334
if service.AS.is_core:
320335
conf.update({
@@ -358,6 +373,9 @@ def build_sciond_conf(self, host):
358373
'trust_db': {
359374
'connection': '%s.trust.db' % os.path.join(self.var_dir, instance_name),
360375
},
376+
'drkey_db': {
377+
'connection': '%s.drkey.db' % os.path.join(self.var_dir, instance_name),
378+
},
361379
})
362380
return conf
363381

scionlab/tests/data/test_config_tar/host_1.yml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,10 @@ etc/scion/cs-1.toml: |
498498
[ca]
499499
mode = "in-process"
500500
501+
[drkey]
502+
cert_file = "/etc/scion/crypto/as/ISD17-ASffaa_0_1101.pem"
503+
key_file = "/etc/scion/crypto/as/cp-as.key"
504+
501505
[general]
502506
config_dir = "/etc/scion"
503507
id = "cs-1"
@@ -518,6 +522,12 @@ etc/scion/cs-1.toml: |
518522
[beaconing.policies]
519523
propagation = "/etc/scion/beacon_policy.yaml"
520524
525+
[drkey.delegation]
526+
colibri = [ "127.0.0.1",]
527+
528+
[drkey.drkey_db]
529+
connection = "/var/lib/scion/cs-1.drkey.db"
530+
521531
[log.console]
522532
level = "info"
523533
etc/scion/keys/master0.key: |-
@@ -603,7 +613,7 @@ scionlab-config.json: |-
603613
"etc/scion/crypto/voting/ISD17-ASffaa_0_1101.sensitive.crt": "131ec8597fbf56d7f65c9bba48874c5cd64c157a",
604614
"etc/scion/crypto/voting/regular-voting.key": "48fd836d8c4f7a3cb2bec2045d03a46c2ca99337",
605615
"etc/scion/crypto/voting/sensitive-voting.key": "0ca15a73e4d864f32228f4687f29505ac093dbfc",
606-
"etc/scion/cs-1.toml": "9aa4d5460b518ac50caac845f9e70f1b7918f589",
616+
"etc/scion/cs-1.toml": "dce4c4f6293a5cb2d799fa15305eae1df86400a9",
607617
"etc/scion/keys/master0.key": "9a91ea3b0c0121326d29224de5d444a31c74ef20",
608618
"etc/scion/keys/master1.key": "9a91ea3b0c0121326d29224de5d444a31c74ef20",
609619
"etc/scion/topology.json": "c1afb4da9e309ca7a1c697cb0238e41fc84ae96b"
@@ -618,5 +628,5 @@ scionlab-config.json: |-
618628
"scion-dispatcher.service"
619629
],
620630
"url": "http://localhost:8000",
621-
"version": "15.8"
631+
"version": "16.8"
622632
}

scionlab/tests/data/test_config_tar/host_16.yml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,10 @@ etc/scion/cs-1.toml: |
524524
origination_interval = "5s"
525525
propagation_interval = "5s"
526526
527+
[drkey]
528+
cert_file = "/etc/scion/crypto/as/ISD17-ASffaa_1_1.pem"
529+
key_file = "/etc/scion/crypto/as/cp-as.key"
530+
527531
[general]
528532
config_dir = "/etc/scion"
529533
id = "cs-1"
@@ -544,6 +548,12 @@ etc/scion/cs-1.toml: |
544548
[beaconing.policies]
545549
propagation = "/etc/scion/beacon_policy.yaml"
546550
551+
[drkey.delegation]
552+
colibri = [ "127.0.0.1",]
553+
554+
[drkey.drkey_db]
555+
connection = "/var/lib/scion/cs-1.drkey.db"
556+
547557
[log.console]
548558
level = "info"
549559
etc/scion/keys/master0.key: |-
@@ -605,7 +615,7 @@ scionlab-config.json: |-
605615
"etc/scion/co-1.toml": "5f44683ff73c2f105908e20476b8a6f9a17caf26",
606616
"etc/scion/crypto/as/ISD17-ASffaa_1_1.pem": "d7c2c86acea31bb986430baf5994d8ed5ac6d5df",
607617
"etc/scion/crypto/as/cp-as.key": "5fac5f3c239a6f9b7bac858977e806e2003d8f52",
608-
"etc/scion/cs-1.toml": "84467cd10682d975caeccba3a7eaaec1bd9ea858",
618+
"etc/scion/cs-1.toml": "184cd6d33fe54808104a3a73e7f82f3c4823f308",
609619
"etc/scion/keys/master0.key": "5b95d59a993b11fe65e3ca747ed6c3ea7293a70d",
610620
"etc/scion/keys/master1.key": "5b95d59a993b11fe65e3ca747ed6c3ea7293a70d",
611621
"etc/scion/topology.json": "2b3ad3b6e2e899c60cb128c45d5adb862ecda9e4"
@@ -620,5 +630,5 @@ scionlab-config.json: |-
620630
"scion-dispatcher.service"
621631
],
622632
"url": "http://localhost:8000",
623-
"version": "15.6"
633+
"version": "16.6"
624634
}

scionlab/tests/data/test_config_tar/host_17.yml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,10 @@ etc/scion/cs-1.toml: |
401401
origination_interval = "5s"
402402
propagation_interval = "5s"
403403
404+
[drkey]
405+
cert_file = "/etc/scion/crypto/as/ISD19-ASffaa_1_2.pem"
406+
key_file = "/etc/scion/crypto/as/cp-as.key"
407+
404408
[general]
405409
config_dir = "/etc/scion"
406410
id = "cs-1"
@@ -421,6 +425,12 @@ etc/scion/cs-1.toml: |
421425
[beaconing.policies]
422426
propagation = "/etc/scion/beacon_policy.yaml"
423427
428+
[drkey.delegation]
429+
colibri = [ "127.0.0.1",]
430+
431+
[drkey.drkey_db]
432+
connection = "/var/lib/scion/cs-1.drkey.db"
433+
424434
[log.console]
425435
level = "info"
426436
etc/scion/keys/master0.key: |-
@@ -482,7 +492,7 @@ scionlab-config.json: |-
482492
"etc/scion/co-1.toml": "5f44683ff73c2f105908e20476b8a6f9a17caf26",
483493
"etc/scion/crypto/as/ISD19-ASffaa_1_2.pem": "7e8a1969e90d904cb13266ea0141b52b9f42cf24",
484494
"etc/scion/crypto/as/cp-as.key": "c4f2edd92dc88ddfc81c1515500b24f1038da1c3",
485-
"etc/scion/cs-1.toml": "84467cd10682d975caeccba3a7eaaec1bd9ea858",
495+
"etc/scion/cs-1.toml": "c9a497ae0a7310205b4ab78afaf0a1a6f3a7dbeb",
486496
"etc/scion/keys/master0.key": "f1f0ecf7545ffa2035579bfaa0f4b4921df250ec",
487497
"etc/scion/keys/master1.key": "f1f0ecf7545ffa2035579bfaa0f4b4921df250ec",
488498
"etc/scion/topology.json": "d4e69284d31d71a05528cb99855899ad63f85695"
@@ -497,5 +507,5 @@ scionlab-config.json: |-
497507
"scion-dispatcher.service"
498508
],
499509
"url": "http://localhost:8000",
500-
"version": "15.5"
510+
"version": "16.5"
501511
}

scionlab/tests/data/test_config_tar/host_4.yml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,10 @@ etc/scion/cs-1.toml: |
530530
origination_interval = "5s"
531531
propagation_interval = "5s"
532532
533+
[drkey]
534+
cert_file = "/etc/scion/crypto/as/ISD17-ASffaa_0_1107.pem"
535+
key_file = "/etc/scion/crypto/as/cp-as.key"
536+
533537
[general]
534538
config_dir = "/etc/scion"
535539
id = "cs-1"
@@ -550,6 +554,12 @@ etc/scion/cs-1.toml: |
550554
[beaconing.policies]
551555
propagation = "/etc/scion/beacon_policy.yaml"
552556
557+
[drkey.delegation]
558+
colibri = [ "127.0.0.1",]
559+
560+
[drkey.drkey_db]
561+
connection = "/var/lib/scion/cs-1.drkey.db"
562+
553563
[log.console]
554564
level = "info"
555565
etc/scion/keys/master0.key: |-
@@ -624,7 +634,7 @@ scionlab-config.json: |-
624634
"etc/scion/co-1.toml": "5f44683ff73c2f105908e20476b8a6f9a17caf26",
625635
"etc/scion/crypto/as/ISD17-ASffaa_0_1107.pem": "e4239e470a5b169d71c135b66bed25ebd4902129",
626636
"etc/scion/crypto/as/cp-as.key": "106b5e0c2b178641c9fdc99bc1d7a99e712c7197",
627-
"etc/scion/cs-1.toml": "84467cd10682d975caeccba3a7eaaec1bd9ea858",
637+
"etc/scion/cs-1.toml": "7922708831c71fb9b0c185e3690586e3b94171a4",
628638
"etc/scion/keys/master0.key": "7b87dcf6b8fda0f0facd3efb3e3b84c1c5c58cb1",
629639
"etc/scion/keys/master1.key": "7b87dcf6b8fda0f0facd3efb3e3b84c1c5c58cb1",
630640
"etc/scion/topology.json": "8cc26714431b5044f160f28ef10d22a6d1a81c0d"
@@ -640,5 +650,5 @@ scionlab-config.json: |-
640650
"scion-dispatcher.service"
641651
],
642652
"url": "http://localhost:8000",
643-
"version": "15.10"
653+
"version": "16.10"
644654
}

scionlab/tests/data/test_config_tar/user_as_18.yml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,10 @@ etc/scion/cs-1.toml: |
403403
origination_interval = "5s"
404404
propagation_interval = "5s"
405405
406+
[drkey]
407+
cert_file = "/etc/scion/crypto/as/ISD20-ASffaa_1_3.pem"
408+
key_file = "/etc/scion/crypto/as/cp-as.key"
409+
406410
[general]
407411
config_dir = "/etc/scion"
408412
id = "cs-1"
@@ -423,6 +427,12 @@ etc/scion/cs-1.toml: |
423427
[beaconing.policies]
424428
propagation = "/etc/scion/beacon_policy.yaml"
425429
430+
[drkey.delegation]
431+
colibri = [ "127.0.0.1",]
432+
433+
[drkey.drkey_db]
434+
connection = "/var/lib/scion/cs-1.drkey.db"
435+
426436
[log.console]
427437
level = "info"
428438
etc/scion/keys/master0.key: |-
@@ -483,7 +493,7 @@ scionlab-config.json: |-
483493
"etc/scion/co-1.toml": "5f44683ff73c2f105908e20476b8a6f9a17caf26",
484494
"etc/scion/crypto/as/ISD20-ASffaa_1_3.pem": "ba1b681c70af686558bec871e519f396a14019e9",
485495
"etc/scion/crypto/as/cp-as.key": "0fc4fdc2abf7d5aa5d5029b9bd0700977b3da85f",
486-
"etc/scion/cs-1.toml": "84467cd10682d975caeccba3a7eaaec1bd9ea858",
496+
"etc/scion/cs-1.toml": "7b22a10f14b2fcfb6b22133d64e1a7c99d7a6651",
487497
"etc/scion/keys/master0.key": "d36156acb222984eb19866acf01f80b14326b310",
488498
"etc/scion/keys/master1.key": "d36156acb222984eb19866acf01f80b14326b310",
489499
"etc/scion/topology.json": "c4c65f6f792007d668b06c42819940cc74a717de"
@@ -498,5 +508,5 @@ scionlab-config.json: |-
498508
"scion-dispatcher.service"
499509
],
500510
"url": "http://localhost:8000",
501-
"version": "15.5"
511+
"version": "16.5"
502512
}

scionlab/tests/data/test_config_tar/user_as_19.yml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -526,6 +526,10 @@ etc/scion/cs-1.toml: |
526526
origination_interval = "5s"
527527
propagation_interval = "5s"
528528
529+
[drkey]
530+
cert_file = "/etc/scion/crypto/as/ISD20-ASffaa_1_4.pem"
531+
key_file = "/etc/scion/crypto/as/cp-as.key"
532+
529533
[general]
530534
config_dir = "/etc/scion"
531535
id = "cs-1"
@@ -546,6 +550,12 @@ etc/scion/cs-1.toml: |
546550
[beaconing.policies]
547551
propagation = "/etc/scion/beacon_policy.yaml"
548552
553+
[drkey.delegation]
554+
colibri = [ "127.0.0.1",]
555+
556+
[drkey.drkey_db]
557+
connection = "/var/lib/scion/cs-1.drkey.db"
558+
549559
[log.console]
550560
level = "info"
551561
etc/scion/keys/master0.key: |-
@@ -607,7 +617,7 @@ scionlab-config.json: |-
607617
"etc/scion/co-1.toml": "5f44683ff73c2f105908e20476b8a6f9a17caf26",
608618
"etc/scion/crypto/as/ISD20-ASffaa_1_4.pem": "328dc2230dc2354f84c54955f3c27b062f3156f9",
609619
"etc/scion/crypto/as/cp-as.key": "5b108e8bcb9ae6dddaef910bace302e143b0f5a9",
610-
"etc/scion/cs-1.toml": "84467cd10682d975caeccba3a7eaaec1bd9ea858",
620+
"etc/scion/cs-1.toml": "c92e12f965614db9300f4f2b77cd98e8f986b5e8",
611621
"etc/scion/keys/master0.key": "df4e0ab5188491c3993e5718deae6c7bf9f653b1",
612622
"etc/scion/keys/master1.key": "df4e0ab5188491c3993e5718deae6c7bf9f653b1",
613623
"etc/scion/topology.json": "e71204be12f25cba1a3bd34c71af1e1cc47875b3"
@@ -622,5 +632,5 @@ scionlab-config.json: |-
622632
"scion-dispatcher.service"
623633
],
624634
"url": "http://localhost:8000",
625-
"version": "15.6"
635+
"version": "16.6"
626636
}

scionlab/tests/data/test_config_tar/user_as_20.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,10 @@ gen/ASffaa_1_5/cs-1.toml: |
403403
origination_interval = "5s"
404404
propagation_interval = "5s"
405405
406+
[drkey]
407+
cert_file = "gen/ASffaa_1_5/crypto/as/ISD17-ASffaa_1_5.pem"
408+
key_file = "gen/ASffaa_1_5/crypto/as/cp-as.key"
409+
406410
[general]
407411
config_dir = "gen/ASffaa_1_5"
408412
id = "cs-1"
@@ -423,13 +427,22 @@ gen/ASffaa_1_5/cs-1.toml: |
423427
[beaconing.policies]
424428
propagation = "gen/ASffaa_1_5/beacon_policy.yaml"
425429
430+
[drkey.delegation]
431+
colibri = [ "127.0.0.1",]
432+
433+
[drkey.drkey_db]
434+
connection = "gen-cache/cs-1.drkey.db"
435+
426436
[log.console]
427437
level = "info"
428438
gen/ASffaa_1_5/keys/master0.key: |-
429439
yXRsWitUgTwm/BQ1jl/zgw==
430440
gen/ASffaa_1_5/keys/master1.key: |-
431441
yXRsWitUgTwm/BQ1jl/zgw==
432442
gen/ASffaa_1_5/sd.toml: |
443+
[drkey_db]
444+
connection = "gen-cache/sd.drkey.db"
445+
433446
[general]
434447
config_dir = "gen/ASffaa_1_5"
435448
id = "sd"

0 commit comments

Comments
 (0)