...
- Kubernetes interface is REST. Exact supported version of kubernetes has to be specified by every ONAP release
- Database interface depends on DB type but only encrypted communication should be used
- xNF interface depends on particular xNF but all xNFs should support secure protocols for communication
- NFVI interface is REST (usually OpenStack or Kubernetes)
- IAM interface is Open ID Connect
- if operator already has OIDC compatible solution ONAP should just use it
- if operator has Identity Provider (LDAP/Kerberos/etc) external OIDC solution should be deployed (ie keycloak) with operator IdP configured as backend
- In testing environment external OIDC solution should be deployed and bootstraped with test users
- CA interface can be one of:
- Manual interaction by deployer that will retrieve certificates and the bootstrap ONAP instance with them
- One of automated certificate retrieval protocols (ACME, CMPv2 etc)
- In testing environment external CA (and ONAP should use automated certificate retrieval as described in b) solution should be deployed
Requirements
...
on interfaces
Kubernetes
- Cluster should be configured according to CIS guidelineKubernetes Benchmark
- Encryption at rest should be properly configured to ensure that secrets are never stored in the plain text
...
- Each DB should be configured according to corresponding CIS guideline
- All DB should be already created or ONAP should be provided with user that is capable of creating DB
- If ONAP creates a DB a dedicated user account with privileges limited to that DB should be created. Password used for this user cannot be hardcoded in ONAP source.
xNF
...
- Define by theĀ ONAP VNF security requirements
NFVI
...
- Defined by the CNTT Reference Architecture 1 & 2
IAM
- IAM has to must support OpenID connect Connect standard
CA
- If automated certificate retrieval is used one of .... has to be supported by the CA (CMPv2, ACME, SCEP)
Requirements
...
on exposed interfaces
- North and south interfaces should be separated (ie different instance of ingress controller) to allow to configure operator network policy properlyprovide operator deployment flexibility
- All Northbound interfaces has to musts be protected using TLS
- All Northbound interfaces has to must support SSO
- All Northbound interfaces has to must support RBAC
- All roles used in ONAP have to be documented
- All forms should validate and sanitize their input provided by the user
- Southbound interfaces has to fulfill must satisfy VNF security requirements
- ...
...
- ONAP should not include any user database
- ONAP should not implement RBAC on it's own but depend on external component to provide it
- ONAP should not implement CA functionality but depend on external component to provide it
- ONAP components should use mTLS instead of username/password for authentication between each other
- ONAP should configure network policies so that only desired components can communicate with each other
- ONAP have to must store all sensitive material (keys, passwords) in kubernetes Kubernetes secrets
- ONAP docker images have to be hardened (see CIS Docker Benchmark)
- ONAP can must use only approved docker base images
- ONAP should log all important events in the to a centralized placelocation
- ONAP should log security audit logs to a secure location
- ONAP logs cannot include any secret material (e.g., passwords and keys)
- All ONAP components have to must support OIDC
- ...
Current ONAP security model
Cloud-Native ONAP security model
- Every component in it's its own namespace
- All "common" components in separate namespaces
- No implicit dependencies between common components and ONAP
- No nodeports unless really required
- istio-ingress used as ingress controller
- Up to 4 entrypoints for deployment. For example
- simpledemo.onap.org (UI)
- south.simpledemo.onap.org (southbound interfaces)
- iam.simpledemo.onap.org (keycloak)
- api.simpledemo.onap.org (API for OSS/BSS)
- Every entrypoint exposed as a separate ingress instance
- Every ingress gateway does terminates the SSL termination and reencrypts the traffic and send to the TSL and re-encrypts the payload before sending to the destination component using mTLS
- Istio ISTIO network policy must be configured in a way so that only desired authorized services can communicate with each other
- Auth between services done using certs (via mTLS)
- OpenID Connect used to authenticate user
- In testing deployment keycloak is used but can be replaced with anything else compatible with OIDC
- Cert-manager and citadel used to retrieve certificates
- Kubernetes is configured to use encryption at rest plugin
- ISTIO automated sidecar injection is configured in underlying kubernetesKubernetes
- No root pods
- All DB are considered as external
- Documented roles
- Ability to integrate with LDAP, Kerberos, AAF as IdP
- Ability to retrieve the certificate from external CA
...