Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Together with CertService, AAF provides CertService's client, which is a docker image meant to be used to call CertService API in a secure way. CertService's client should be invoked by other ONAP components as Init container, which has a dedicated role - acquires acquire certificate and passes pass it to application container. Call to CertService can be controlled by environment variables which are passed to this init container.

...

Goal of this feature is to integrate DCAE with CertService to acquire operator certificates meant to protect external traffic between DCAE's components (VES collector, HV-VES, RestConf collector and DFC) and xNFs. For that reason K8s plugin which creates K8s resources from Cloudify blueprints must be enhanced with new TLS properties support. New TLS properties are meant to control CertService's client call in init containers section and environment variables which are passed to it.

...

Gliffy Diagram
size600
namecmpv2_contribution_overview
pagePin23

Blueprint generator and K8s plugin

...

** - property available in blueprint, doesn't need to be changed every deployment


GroupProperty nameComponent spec typeBlueprint type Type (input*/blueprint**)DefaultDescription
external_cert









use_external_tlsinputinputtrueA boolean that indicates whether the component uses AAF CertService to acquire operator certificate to protect external (between xNFs and ONAP) traffic. For a time being only operator certificate from CMPv2 server is supported
external_cert_directoryhardcoded in BP Generatorblueprint/opt/app/dcae-certificate/external_certDirectory where operator certificate and trusted certs should be created
ca_namehardcoded in BP GeneratorinputRAName of Certificate Authority configured on CertService side (in cmpServers.json). Default RA_TEST corresponds to default CMPv2 testing configuration.
output_typehardcoded in BP GeneratorinputP12Certificate output type

external_cert:

external_certificate_parameters

common_namehardcoded in BP Generatorinput<Specific for every blueprint>Common name which should be present in certificate. Specific for every blueprint (e.g. dcae-ves-collector for VES)
sanshardcoded in BP Generatorinput<Specific for every blueprint>List of Subject Alternative Names (SANs) which should be present in certificate. Delimiter - : Should contain common_name value and other FQDNs under which given component is accessible, e.g. if xNFs uses ves-collector in request URL, such should be also present in SANs - e.g. dcae-ves-collector:ves-collector.

...

GroupProperty nameOriginDefaultDescription
external_cert













image_tagpluginglobal helm valuenexus3.onap.org:10001/onap/org.onap.aaf.certservice.aaf-certservice-client:$VERSIONImage CertService client image name and version
request_urlpluginglobal helm valuehttps://aaf-cert-service:8443/v1/certificate/URL to Cert Service API
timeoutpluginglobal helm value30000Request timeout. Needs to be taken from global CMPv2 helm variable
countrypluginglobal helm valueUSCountry name in ISO 3166-1 alpha-2 format, for which certificate will be created. Needs to be taken from global CMPv2 helm variable
organizationpluginglobal helm valueLinux-FoundationOrganization name, for which certificate will be created. Needs to be taken from global CMPv2 helm variable
statepluginglobal helm valueCaliforniaState name, for which certificate will be created. Needs to be taken from global CMPv2 helm variable
organizational_unitpluginglobal helm valueONAPOrganizational unit name, for which certificate will be created. Needs to be taken from global CMPv2 helm variable
locationpluginglobal helm valueSan-FranciscoLocation name, for which certificate will be created. Needs to be taken from global CMPv2 helm variable

...

Keep application intact and implement truststores merger and invoke it as new init container to provide to application one truststore with multiple trust anchors taken from multiple truststores and one keystore with certificate from CMPv2 server.

Optionally adjust components (e.g. DFC) which use different certificates internally and externally to support the same truststore and keystore on both traffics.


Truststore merger properties

...

Property nameExampleDescription
TRUSTSTORES_PATHS/etc/dcae/truststore.jks:/etc/dcae/truststore2cacert.p12pem:/etc/dcae/cacerttruststore2.pemp12List of truststores to be merged. Certificates from all provided truststores will be added to first provided truststore after success execution.
TRUSTSTORES_PASSWORDS_PATHS/etc/dcae/truststore.pass::/etc/dcae/truststore2.pass:/etc/dcae/cacert.key

List of passwords to provided truststores - order must be the same as in truststores

...

WARNING: PEM is not protected by password so its value should be empty

Truststore merger flow

Gliffy Diagram
size600
nametrusts_merger_flow
pagePin6


Policy to generate new aliases

...

for certificates from PEM files

Use as prefix pem-trusted-certificate- and $INDEX

Extra K8s plugin property

GroupProperty nameOriginDefaultDescription
truststore_mergerimage_tagglobal helm valuenexus3.onap.org:10001/onap/org.onap.dcae.truststore-merger:$VERSIONTruststore merger image name and version

Option 2 (Adjust DCAE components to support two internal and external truststores and keystores)

...

GroupProperty nameDefaultDescription

properties:

application_config

external_keystore_path/opt/app/dcae-certificate/external_cert/keystore.jksPath to keystore with external certificate
external_keystore_password_path/opt/app/dcae-certificate/external_cert/keystore.passPath to password for keystore with external certificate
external_truststore_path/opt/app/dcae-certificate/external_cert/truststore.jksPath to truststore with external trust anchors
external_truststore_password_path/opt/app/dcae-certificate/external_cert/truststore.passPath to password for truststore with external trust anchors


DCAE multisite deployment support

There are two ways to support DCAE multisite deployment:

  • One which requires direct connectivity between EDGE cloud and CMPv2 server (which isn't so extraordinary if xNFs also use CMPv2 protocol to enroll certificates)
  • One which doesn't require direct connectivity between EDGE cloud and CMPv2 server, but requires direct connectivity between EDGE cloud and central ONAP deployment.

Each option has its own benefits. Each requires different approach and procedure.

To correctly support first option, instance of CertService (server part) has to be deployed on every EDGE cloud, where DCAE collectors are expected to be running. Nothing else is required.

To correctly support second option, secret with certificate for CertService client has to be copied from central ONAP deployment to EDGE clouds, where DCAE collectors are expected to be running. On central ONAP deployment CertService has to be exposed outside K8s cluster. On every EDGE cloud proxy service is also required.