Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add GNMI client cert cname check support. #18709

Merged
merged 14 commits into from
Aug 22, 2024
2 changes: 2 additions & 0 deletions dockers/docker-sonic-gnmi/gnmi-native.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ if [ -n "$CERTS" ]; then
if [ ! -z $CA_CRT ]; then
TELEMETRY_ARGS+=" --ca_crt $CA_CRT"
fi

TELEMETRY_ARGS+=" --config_table_name GNMI_CLIENT_CERT"
elif [ -n "$X509" ]; then
SERVER_CRT=$(echo $X509 | jq -r '.server_crt')
SERVER_KEY=$(echo $X509 | jq -r '.server_key')
Expand Down
3 changes: 3 additions & 0 deletions dockers/docker-sonic-telemetry/telemetry.sh
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ if [ -n "$CERTS" ]; then
if [ ! -z $CA_CRT ]; then
TELEMETRY_ARGS+=" --ca_crt $CA_CRT"
fi

# Reuse GNMI_CLIENT_CERT for telemetry service
TELEMETRY_ARGS+=" --config_table_name GNMI_CLIENT_CERT"
elif [ -n "$X509" ]; then
SERVER_CRT=$(echo $X509 | jq -r '.server_crt')
SERVER_KEY=$(echo $X509 | jq -r '.server_key')
Expand Down
8 changes: 8 additions & 0 deletions src/sonic-yang-models/tests/files/sample_config_db.json
Original file line number Diff line number Diff line change
Expand Up @@ -1323,6 +1323,14 @@
"port": "50052"
}
},
"GNMI_CLIENT_CERT": {
"testcert1": {
"role": "RW"
},
"testcert2": {
"role": "RO"
}
},
"TUNNEL": {
"MuxTunnel0": {
"dscp_mode": "uniform",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,12 @@
},
"GNMI_TABLE_WITH_VALID_CONFIG": {
"desc": "TABLE WITH VALID CONFIG."
},
"GNMI_CLIENT_CERT_LIST_TABLE_WITH_MISSING_ROLE": {
"desc": "CLIENT_CERT_LIST_TABLE_WITH_MISSING_ROLE failure.",
"eStrKey": "Mandatory"
},
"GNMI_CLIENT_CERT_LIST_TABLE_WITH_VALID_CONFIG": {
"desc": "TABLE WITH VALID CONFIG."
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,32 @@
}
}
}
},
"GNMI_CLIENT_CERT_LIST_TABLE_WITH_MISSING_ROLE": {
"sonic-gnmi:sonic-gnmi": {
"sonic-gnmi:GNMI_CLIENT_CERT": {
"GNMI_CLIENT_CERT_LIST": [
{
"cert_cname": "testcert1"
}
]
}
}
},
"GNMI_CLIENT_CERT_LIST_TABLE_WITH_VALID_CONFIG": {
"sonic-gnmi:sonic-gnmi": {
"sonic-gnmi:GNMI_CLIENT_CERT": {
"GNMI_CLIENT_CERT_LIST": [
{
"cert_cname": "testcert1",
"role": "RW"
},
{
"cert_cname": "testcert2",
"role": "RO"
}
]
}
}
}
}
21 changes: 21 additions & 0 deletions src/sonic-yang-models/yang-models/sonic-gnmi.yang
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,28 @@ module sonic-gnmi {
}

}
}

container GNMI_CLIENT_CERT {
description "GNMI client cert list";

list GNMI_CLIENT_CERT_LIST {
max-elements 8;
key "cert_cname";

leaf cert_cname {
type string;
description
"client cert common name";
}

leaf role {
type string;
mandatory true;
description
"role of client cert common name";
}
}
}
}
}
Loading