
CÔNG TY CỔ PHẦN DỊCH VỤ CÔNG NGHỆ DATECH
Danh sách nội dung [Ẩn]
Cấu hình dịch vụ gRPC trên thiết bị Juniper Junos OS
**Tóm tắt: Cấu hình máy chủ gRPC để cho phép máy khách sử dụng các dịch vụ gRPC trên thiết bị mạng, bao gồm: dịch vụ giao diện vận hành mạng gRPC (gNOI - gRPC Network Operations Interface), dịch vụ giao diện quản lý mạng gRPC (gNMI - gRPC Network Management Interface), dịch vụ giao diện bảng định tuyến gRPC (gRIBI - gRPC Routing Information Base Interface)
Chủ đề này hướng dẫn cách cấu hình dịch vụ gRPC trên các thiết bị Junos, bao gồm: Các tùy chọn xác thực, Cách cấu hình từng tùy chọn. Trước khi máy chủ và máy khách có thể thiết lập một phiên gRPC, bạn cần đáp ứng các yêu cầu được đề cập trong các phần sau.
Các giao diện gNOI, gNMI và gRIBI sử dụng khung gọi thủ tục từ xa gRPC (gRPC Remote Procedure Call framework) để truyền tải dữ liệu. Máy chủ gRPC chạy trên thiết bị mạng và lắng nghe các yêu cầu kết nối trên một cổng được chỉ định. Ứng dụng khách gRPC chạy trên hệ thống quản lý mạng từ xa (NMS - Network Management System) và thiết lập kênh gRPC với máy chủ thông qua địa chỉ host và cổng được chỉ định. Máy khách thực thi các RPC (Remote Procedure Calls - Lời gọi thủ tục từ xa) thông qua phiên gRPC được mã hóa SSL để thực hiện các hoạt động dịch vụ mạng. Hình 1 minh họa kết nối đơn giản giữa máy chủ và máy khách gRPC.
Hình 1: Tương tác giữa Máy chủ và Máy khách gRPC
Các kênh gRPC sử dụng chứng chỉ kênh (channel credentials) để thực hiện xác thực giữa máy chủ và máy khách. Chứng chỉ tiêu chuẩn sử dụng chứng chỉ số X.509 để xác thực máy chủ và máy khách. Chứng chỉ số cung cấp phương thức xác thực thông qua một bên thứ ba tin cậy, gọi là Cơ quan chứng nhận (CA - Certificate Authority). CA chịu trách nhiệm xác minh danh tính của người sở hữu chứng chỉ và ký chứng chỉ (signing) để đảm bảo rằng nó không bị giả mạo hoặc chỉnh sửa. Chuẩn X.509 xác định định dạng của chứng chỉ số. Chứng chỉ số X.509 có thể được sử dụng để thiết lập kết nối an toàn giữa hai đầu cuối thông qua quy trình xác thực chứng chỉ. Để thiết lập kênh gRPC, mỗi thiết bị hoặc ứng dụng cần xác thực phải cung cấp chứng chỉ X.509 trong quá trình trao đổi dữ liệu.
Các thiết bị chạy Junos OS hỗ trợ hai mô hình xác thực trong các phiên gRPC dựa trên SSL: Xác thực chỉ máy chủ (Server-Only Authentication), máy chủ cung cấp chứng chỉ khóa công khai khi kênh gRPC được thiết lập, máy khách sử dụng chứng chỉ Root CA của máy chủ để xác thực máy chủ. Xác thực hai chiều (Mutual Authentication), máy khách cũng phải cung cấp chứng chỉ số X.509 khi kết nối đến máy chủ, máy chủ thực hiện xác thực chứng chỉ của máy khách, nếu xác thực thành công, máy khách được phép thực thi các cuộc gọi RPC.
Khuyến nghị bảo mật: Nên cấu hình xác thực hai chiều và sử dụng chứng chỉ do CA cấp để tăng cường bảo mật. Tuy nhiên, thiết bị vẫn hỗ trợ chứng chỉ tự ký (self-signed certificate) nếu cần thiết.
Hạ tầng khóa công khai (PKI) trên Junos OS, PKI (Public Key Infrastructure) hỗ trợ: Phân phối và nhận diện khóa mã hóa công khai, giúp trao đổi dữ liệu an toàn và xác minh danh tính của các bên liên lạc. Đối với các dịch vụ gRPC, PKI của Junos OS phải chứa chứng chỉ của thiết bị cục bộ đóng vai trò máy chủ gRPC. Nếu sử dụng xác thực hai chiều, PKI của Junos cũng phải chứa chứng chỉ Root CA để xác thực các máy khách gRPC kết nối đến thiết bị.
Yêu cầu đối với chứng chỉ máy chủ gRPC
Bảng 1 mô tả các yêu cầu cơ bản đối với xác thực chỉ máy chủ và xác thực hai chiều khi máy khách gRPC kết nối đến thiết bị để thực hiện các dịch vụ gRPC. Chứng chỉ của máy chủ gRPC phải chứa: Tên miền của máy chủ trong trường Common Name (CN) hoặc địa chỉ IP của máy chủ trong trường Subject Alternative Name (subjectAltName - SAN) IP Address. Ứng dụng khách gRPC phải sử dụng cùng giá trị này để thiết lập kết nối. Nếu chứng chỉ sử dụng trường SubjectAltName IP Address, thì trường Common Name (CN) sẽ bị bỏ qua trong quá trình xác thực.
Bảng 1: Yêu cầu đối với Xác thực chỉ máy chủ và xác thực hai chiều trong phiên gRPC.
Yêu cầu | Xác thực chỉ máy chủ | Xác thực hai chiều |
Chứng chỉ | Máy chủ phải có chứng chỉ khóa công khai X.509. | Máy chủ và máy khách đều phải có chứng chỉ khóa công khai X.509. Nếu máy khách kết nối đến địa chỉ IP của máy chủ thay vì hostname, chứng chỉ của máy chủ phải bao gồm trường mở rộng subjectAltName (SAN) với địa chỉ IP của máy chủ. |
Junos PKI | Chứng chỉ cục bộ của máy chủ phải được nạp vào Junos PKI. | Chứng chỉ cục bộ của máy chủ và chứng chỉ Root CA của từng máy khách phải được nạp vào Junos PKI. |
Thông tin xác thực kênh | Máy khách phải cung cấp chứng chỉ Root CA của máy chủ khi thiết lập kênh gRPC. | Máy khách phải cung cấp chứng chỉ và khóa của mình, cùng với chứng chỉ Root CA của máy chủ khi thiết lập kênh gRPC. |
Thông tin xác thực kênh (Channel credentials) được đính kèm vào kênh gRPC và cho phép ứng dụng khách truy cập vào dịch vụ. Trong khi đó, thông tin xác thực cuộc gọi (Call credentials) được gắn với một thao tác dịch vụ cụ thể (yêu cầu RPC) và cung cấp thông tin về người sử dụng ứng dụng khách. Thông tin xác thực cuộc gọi được gửi theo từng yêu cầu, tức là với mỗi lần gọi RPC. Để thực hiện các thao tác dựa trên gRPC trên thiết bị Junos, bạn phải cung cấp thông tin xác thực cuộc gọi trong yêu cầu. Người dùng phải có một tài khoản được định nghĩa cục bộ trên thiết bị, hoặc phải được xác thực bởi máy chủ TACACS+, sau đó ánh xạ người dùng này tới một tài khoản mẫu được định nghĩa trên thiết bị. Bạn có thể cung cấp thông tin xác thực cuộc gọi (tên người dùng và mật khẩu) trong tham số metadata của yêu cầu RPC. Nếu xác thực thành công, thiết bị Junos sẽ thực thi yêu cầu RPC với quyền hạn của người dùng được chỉ định.
**Lưu ý: Ngoài cách cung cấp thông tin xác thực cuộc gọi cho từng yêu cầu RPC thực thi trên thiết bị Junos, bạn có thể sử dụng API jnx_authentication_service trong Juniper Extension Toolkit (JET) để đăng nhập vào thiết bị một lần ngay khi bắt đầu phiên gRPC. Sau đó, tất cả các yêu cầu RPC tiếp theo trong kênh đều được xác thực. Bạn có thể tải thư viện JET Client IDL từ trang tải xuống của Juniper Networks.
Mặc định, các thiết bị Junos cho phép máy khách gRPC đã được xác thực thực thi tất cả các RPC gRPC. Tuy nhiên, bạn có thể tùy chọn cấu hình login class cho người dùng gRPC để giới hạn hoặc cho phép một số RPC nhất định. Để chỉ định các RPC này, bạn sử dụng các lệnh cấu hình allow-grpc-rpc-regexps và deny-grpc-rpc-regexps, đồng thời định nghĩa các biểu thức chính quy tương ứng với các RPC cần kiểm soát.
Phiên gRPC được mã hóa bằng SSL sử dụng chứng chỉ khóa công khai X.509 để xác thực máy chủ và máy khách gRPC. Đối với xác thực chỉ máy chủ, chỉ cần chứng chỉ cho máy chủ gRPC. Đối với xác thực hai chiều, cả máy chủ và máy khách gRPC đều phải có chứng chỉ. Yêu cầu đối với chứng chỉ:
Để tạo chứng chỉ máy chủ gRPC bằng OpenSSL, thực hiện các bước sau:
- Tạo khóa riêng và xác định độ dài khóa tính theo bit.
user@nms:~$ openssl genrsa -out server.key 4096 Generating RSA private key, 4096 bit long modulus (2 primes) ...++++ ..........................................................................++++ e is 65537 (0x010001) |
- Nếu máy khách gRPC kết nối với địa chỉ IP của máy chủ gRPC, hãy cập nhật tệp openssl.cnf hoặc tệp cấu hình tương đương để định nghĩa phần mở rộng subjectAltName=IP với địa chỉ IP của máy chủ gRPC.
user@nms:~$ cat openssl.cnf # OpenSSL configuration file. ... extensions = v3_sign ... [v3_sign] subjectAltName=IP:10.53.52.169 |
- Tạo một yêu cầu ký chứng chỉ (CSR), trong đó chứa khóa công khai của thực thể và thông tin về danh tính của họ.
user@nms:~$ openssl req -new -key server.key -out server.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:CA Locality Name (eg, city) []:Sunnyvale Organization Name (eg, company) [Internet Widgits Pty Ltd]: Acme Organizational Unit Name (eg, section) []: testing Common Name (e.g. server FQDN or YOUR name) []:gnoi-server.example.com Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: |
Ngoài ra, bạn có thể cung cấp thông tin CSR trong một lệnh duy nhất, ví dụ:
user@nms:~$ openssl req -new -key server.key -out server.csr -subj "/C=US/ST=CA/L=Sunnyvale/O=Acme/OU=testing/CN=gnoi-server.example.com" |
- Tạo chứng chỉ bằng một trong các cách sau:
user@nms:~$ openssl x509 -req -in server.csr -CA /etc/pki/certs/ServerRootCA.crt -CAkey /etc/pki/certs/ServerRootCA.key -set_serial 0101 -out server.crt -days 365 -sha256 -extfile openssl.cnf Signature ok subject=C = US, ST = CA, L = Sunnyvale, O = Acme, OU = testing, CN = gnoi-server.example.com Getting Private key |
user@nms:~$ openssl x509 -req -in server.csr -signkey server.key -out server.crt -days 365 -sha256 -extfile openssl.cnf Signature ok subject=C = US, ST = CA, L = Sunnyvale, O = Acme, OU = testing, CN = gnoi-server.example.com Getting Private key |
- Xác minh rằng trường Common Name (CN) và các phần mở rộng của chứng chỉ (nếu có) là chính xác.
user@nms:~$ openssl x509 -text -noout -in server.crt Certificate: Data: Version: 3 (0x2) ... Subject: C = US, ST = CA, L = Sunnyvale, O = Acme, OU = testing, CN = gnoi-server.example.com ... X509v3 extensions: X509v3 Subject Alternative Name: IP Address:10.53.52.169 ... |
Đối với xác thực hai chiều, lặp lại các bước trước đó với thông tin của máy khách gRPC để tạo khóa và chứng chỉ cho máy khách. Chứng chỉ của máy khách không cần trường mở rộng SAN IP.
Thiết bị mạng chạy máy chủ gRPC phải có chứng chỉ X.509 để xác định thiết bị với các máy khách gRPC. Để thực hiện các dịch vụ dựa trên gRPC trên thiết bị Junos, bạn cần nạp chứng chỉ khóa công khai và khóa bí mật của thiết bị mạng cục bộ vào Junos PKI. Sau khi nạp chứng chỉ và thực hiện cấu hình ban đầu, các máy khách gRPC có thể sử dụng bất kỳ micro-service nào để cập nhật chứng chỉ. Ví dụ: một máy khách gRPC có thể sử dụng dịch vụ gNOI CertificateManagement để cài đặt chứng chỉ mới hoặc thay thế chứng chỉ hiện có.
Các bước để nạp chứng chỉ và khóa của thiết bị vào PKI:
- Tải xuống chứng chỉ và khóa của thiết bị đang đóng vai trò máy chủ gRPC về thiết bị đó.
- Trong chế độ vận hành (operational mode), xác định một định danh và nạp chứng chỉ cùng với khóa của thiết bị vào PKI.
user@host> request security pki local-certificate load certificate-id gnoi-server filename /var/tmp/server.crt key /var/tmp/server.key Local certificate loaded successfully |
- (Tuỳ chọn) Xác minh rằng chứng chỉ đã có trong cơ sở dữ liệu PKI.
user@host> show security pki local-certificate certificate-id gnoi-server LSYS: root-logical-system Certificate identifier: gnoi-server Issued to: gnoi-server.example.com, Issued by: C = US, ST = CA, O = serverRootCAOrg, CN = serverRootCA Validity: Not before: 04-13-2022 18:15 UTC Not after: 04-13-2023 18:15 UTC Public key algorithm: rsaEncryption(4096 bits) Keypair Location: Keypair generated locally |
Các dịch vụ dựa trên gRPC sử dụng thiết lập kết nối API dựa trên công nghệ Secure Socket Layer (SSL). Đối với kết nối dựa trên SSL, bạn phải chỉ định chứng chỉ cục bộ để xác định máy chủ gRPC.
Sau khi bạn bật dịch vụ gRPC và chỉ định chứng chỉ cục bộ, thiết bị mạng sẽ sử dụng xác thực chỉ máy chủ. Bạn cũng có thể tùy chọn cấu hình xác thực hai chiều (mutual authentication) bằng cách thực hiện các bước trong phần Cấu hình Xác thực Hai Chiều cho Dịch vụ gRPC.
Cấu hình thiết bị mạng để sử dụng dịch vụ gRPC và chỉ định chứng chỉ cục bộ cho xác thực máy chủ:
- Truy cập phần thiết lập kết nối API dựa trên SSL cho các dịch vụ gRPC.
[edit] user@host# edit system services extension-service request-response grpc ssl |
- Cấu hình cổng để sử dụng cho các dịch vụ gRPC.
[edit system services extension-service request-response grpc ssl] user@host# set port port-number |
Ví dụ:
[edit system services extension-service request-response grpc ssl] user@host# set port 32767 |
- Chỉ định chứng chỉ cục bộ.
Nhập định danh của chứng chỉ cục bộ mà bạn đã tải vào Junos PKI trước đó bằng lệnh request security pki local-certificate load trong chế độ operational mode.
[edit system services extension-service request-response grpc ssl] user@host# set local-certificate certificate-id |
Ví dụ sau cấu hình chứng chỉ cục bộ gnoi-server:
[edit system services extension-service request-response grpc ssl] user@host# set local-certificate gnoi-server |
- Cấu hình thiết bị để sử dụng cơ sở dữ liệu PKI cho các chứng chỉ.
[edit system services extension-service request-response grpc ssl] user@host# set use-pki |
- Kích hoạt thiết bị tải lại chứng chỉ mà không cần kết thúc phiên gRPC.
[edit system services extension-service request-response grpc ssl] user@host# set hot-reloading |
- (Tùy chọn) Chỉ định địa chỉ IP để lắng nghe các kết nối đến.
[edit system services extension-service request-response grpc ssl] user@host# set ip-address address |
Ví dụ:
[edit system services extension-service request-response grpc ssl] user@host# set ip-address 192.168.2.1 |
**Lưu ý: Nếu bạn không chỉ định địa chỉ IP, địa chỉ mặc định :: sẽ được sử dụng để lắng nghe các kết nối đến.
- (Tùy chọn) Cấu hình tính năng tracing cho các dịch vụ mở rộng để gỡ lỗi các vấn đề có thể xảy ra.
[edit] user@host# top user@host# set system services extension-service traceoptions file jsd user@host# set system services extension-service traceoptions flag all |
**Lưu ý: Để xem các tệp dấu vết (trace files) của dịch vụ mở rộng trên Junos OS Evolved, sử dụng các lệnh chế độ vận hành: show trace application jsd, show trace application jsd live
- Áp dụng cấu hình (commit).
user@host# commit |
Để cấu hình xác thực hai chiều thay vì chỉ xác thực máy chủ, bạn cũng cần hoàn thành các bước trong Cấu hình Xác thực Hai chiều (Bidirectional) cho Dịch vụ gRPC.
Bạn có thể cấu hình xác thực hai chiều cho các phiên gRPC, trong đó cả thiết bị mạng đóng vai trò máy chủ gRPC và hệ thống quản lý mạng (NMS) đóng vai trò máy khách gRPC đều được xác thực bằng chứng chỉ SSL. Thiết bị Junos sử dụng thông tin xác thực do máy khách cung cấp để xác thực và ủy quyền kết nối.
Bạn có thể cấu hình xác thực hai chiều trên thiết bị Junos bằng một trong các tùy chọn sau:
**Lưu ý: Nếu bạn cấu hình xác thực hai chiều trực tiếp trong thiết bị, thì cấu hình này sẽ ưu tiên hơn bất kỳ thiết lập nào được thực hiện thông qua dịch vụ gNOI.
Trước khi bắt đầu:
Các phần sau đây sẽ hướng dẫn các phương pháp khác nhau để cấu hình xác thực hai chiều. Bạn có thể chọn phương pháp phù hợp nhất với môi trường của mình.
Cấu hình xác thực hai chiều trong cấu hình của thiết bị
Để cấu hình xác thực cho máy khách gRPC trực tiếp trong thiết bị mạng:
- Tải chứng chỉ CA gốc (Root CA certificate) dùng để xác thực chứng chỉ của máy khách về thiết bị mạng đóng vai trò máy chủ gRPC.
- Cấu hình hồ sơ Certificate Authority (CA) cho chứng chỉ CA gốc của máy khách tại cấp [edit security pki].
[edit security pki] user@host# set ca-profile ca-profile-name ca-identity ca-identifier |
Ví dụ:
[edit security pki] user@host# set ca-profile gnoi-client ca-identity clientRootCA |
- Xác nhận cấu hình
[edit] user@host# commit and-quit |
- Trong chế độ hoạt động (operational mode), tải chứng chỉ CA gốc (root CA certificate) được sử dụng để xác minh chứng chỉ của máy khách vào Junos PKI. Chỉ định mã định danh hồ sơ CA (ca-profile identifier) mà bạn đã cấu hình trong các bước trước đó.
user@host> request security pki ca-certificate load ca-profile ca-profile filename cert-path |
Ví dụ:
user@host> request security pki ca-certificate load ca-profile gnoi-client filename /var/tmp/clientRootCA.crt Fingerprint: 00:2a:30:e9:59:94:db:f1:a1:5c:d1:c9:d4:5f:db:8f:f1:f0:8d:c4 (sha1) 02:3b:a0:b8:95:0c:a2:fa:15:18:57:3d:a3:10:e9:ac (md5) 69:97:90:39:de:75:a0:1d:94:1e:06:a8:be:8c:66:e5:41:95:fd:dc:14:8a:e7:3a:e0:42:9e:f9:f7:dd:c8:c2 (sha256) Do you want to load this CA certificate ? [yes,no] (no) yes
CA certificate for profile gnoi-client loaded successfully |
***Mẹo: Để tải một gói chứng chỉ CA (CA certificate bundle), sử dụng lệnh: request security pki ca-certificate ca-profile-group load ca-group-name ca-group-name filename bundle-path
Sau khi tải chứng chỉ, chuyển sang chế độ cấu hình (configuration mode) và tiếp tục cấu hình xác thực hai chiều (mutual authentication).
- Bật xác thực hai chiều và chỉ định các yêu cầu đối với chứng chỉ của máy khách.
[edit system services extension-service request-response grpc ssl] user@host# set mutual-authentication client-certificate-request requirement |
Ví dụ, để chỉ định mức xác thực mạnh nhất, yêu cầu chứng chỉ và xác thực chứng chỉ, sử dụng require-certificate-and-verify.
[edit system services extension-service request-response grpc ssl] user@host# set mutual-authentication client-certificate-request require-certificate-and-verify |
**Lưu ý: Mặc định là no-certificate. Các tùy chọn khác bao gồm: request-certificate, request-certificate-and-verify, require-certificate, require-certificate-and-verify
Chúng tôi khuyến nghị chỉ sử dụng tùy chọn no-certificate trong môi trường thử nghiệm.
- Chỉ định hồ sơ chứng chỉ của cơ quan cấp chứng chỉ (certificate authority profile) sẽ được sử dụng để xác thực chứng chỉ của client.
Hồ sơ chứng chỉ của cơ quan cấp chứng chỉ đã được cấu hình ở bước 2.
[edit system services extension-service request-response grpc ssl] user@host# set mutual-authentication certificate-authority certificate-authority |
Ví dụ, để chỉ định hồ sơ chứng chỉ của cơ quan cấp chứng chỉ có tên gnoi-client
[edit system services extension-service request-response grpc ssl] user@host# set mutual-authentication certificate-authority gnoi-client |
- Xác nhận cấu hình
[edit] user@host# commit and-quit |
Cấu hình xác thực tương hỗ sử dụng dịch vụ gNOI CertificateManagement
Bạn có thể sử dụng dịch vụ gNOI CertificateManagement để thiết lập xác thực tương hỗ giữa máy khách gRPC và máy chủ gRPC thay vì cấu hình trực tiếp trên thiết bị. Trước tiên, bạn thiết lập xác thực chỉ dành cho máy chủ, sau đó sử dụng các RPC của dịch vụ gNOI CertificateManagement để tải chứng chỉ CA của máy khách. Xem Dịch vụ Quản lý Chứng chỉ gNOI để biết thông tin về cách tải chứng chỉ bằng dịch vụ này.
Máy chủ gRPC chỉ hỗ trợ một gói chứng chỉ CA toàn cục cho các dịch vụ gNOI. Khi bạn sử dụng dịch vụ gNOI CertificateManagement để tải gói chứng chỉ CA, thiết bị sẽ tự động sử dụng xác thực tương hỗ. Tuy nhiên, bạn cần lưu ý các điểm sau:
[edit system services extension-service request-response grpc ssl] mutual-authentication { certificate-authority gnoi-ca-bundle; client-certificate-request require-certificate-and-verify; } |
Thông tin xác thực kênh (Channel credentials) được gắn vào kênh gRPC và cho phép ứng dụng khách truy cập dịch vụ.
Thông tin xác thực cuộc gọi (Call credentials) được gắn vào từng yêu cầu RPC cụ thể và cung cấp thông tin về người dùng đang sử dụng ứng dụng khách.
Bạn phải cung cấp call credentials trong mỗi yêu cầu RPC, điều này yêu cầu người dùng phải có tài khoản trên thiết bị mạng. Người dùng phải có tài khoản được định nghĩa cục bộ trên thiết bị mạng, hoặc được xác thực bởi máy chủ TACACS+, sau đó ánh xạ người dùng này vào một tài khoản mẫu được xác định cục bộ trên thiết bị.
Để tạo tài khoản người dùng:
- Cấu hình lệnh user với tên người dùng duy nhất, đồng thời sử dụng lệnh class để chỉ định lớp đăng nhập (login class) có quyền thực hiện tất cả các hành động cần thiết. Ví dụ:
[edit system login] user@host# set user gnoi-user class super-user |
- Đối với tài khoản người dùng cục bộ, hãy cấu hình mật khẩu cho người dùng.
Bạn có thể bỏ qua mật khẩu đối với tài khoản mẫu của người dùng cục bộ, vì người dùng sẽ được xác thực thông qua máy chủ xác thực từ xa.
[edit system login] user@host# set user gnoi-user authentication plain-text-password New password: Retype new password: |
- (Tùy chọn) Cấu hình câu lệnh full-name
để chỉ định tên của người dùng.
[edit system login] user@host# set user gnoi-user full-name "gNOI client" |
- Cam kết cấu hình để kích hoạt tài khoản người dùng trên thiết bị.
[edit system login] user@host# commit |
- Lặp lại các bước trước đó trên mỗi thiết bị mạng nơi client gRPC sẽ thực thi các RPC trong một phiên gRPC.
Mặc định, các thiết bị Junos cho phép một client gRPC đã xác thực thực thi tất cả các RPC gRPC. Bạn có thể cấu hình một lớp đăng nhập (login class) trên Junos để cho phép hoặc từ chối các RPC gRPC cụ thể. Để xác định các RPC, bạn cấu hình các câu lệnh allow-grpc-rpc-regexps và deny-grpc-rpc-regexps bằng cách sử dụng các biểu thức chính quy (regex) để khớp với các RPC. Nếu có sự xung đột giữa danh sách cho phép (allow) và danh sách từ chối (deny), danh sách từ chối sẽ được ưu tiên. Nếu một RPC không khớp với danh sách nào, nó sẽ được phép thực thi theo mặc định.
Các thiết bị Junos sử dụng cú pháp sau để chỉ định các RPC gRPC:
/package.service/rpc |
Trong đó package, service, và rpc là các tên được định nghĩa trong câu lệnh tương ứng trong tệp định nghĩa proto của dịch vụ đó.
Ví dụ:
/gnmi.gNMI/Get /gnoi.certificate.CertificateManagement/Rotate /gnoi.system.System/Reboot /gnoi.system.System/RebootStatus /gribi.gRIBI/.* |
Bạn có thể cấu hình nhiều câu lệnh allow-grpc-rpc-regexps
và deny-grpc-rpc-regexps
với một hoặc nhiều biểu thức. Đặt mỗi biểu thức trong dấu ngoặc kép (" "
). Nếu có nhiều biểu thức, đặt chúng trong dấu ngoặc vuông ([ ]
) và phân tách bằng dấu cách.
allow-grpc-rpc-regexps ["regex1" "regex2" ... ] allow-grpc-rpc-regexps "regex3" |
Để tạo một lớp đăng nhập (login class) xác định quyền ủy quyền cho các gRPC RPCs
- Cấu hình tên lớp đăng nhập và các quyền cần thiết.
[edit system login] user@host# set class class-name permissions [permission1 permission2 ...] |
Ví dụ:
[edit system login] user@host# set class grpc-operator permissions all |
- Trong lớp đăng nhập, cấu hình các biểu thức chính quy cho các RPC mà lớp được phép sử dụng.
[edit system login class class-name] user@host# set allow-grpc-rpc-regexps ["regex1" "regex2" ... ] user@host# set allow-grpc-rpc-regexps "regex3" |
Ví dụ, câu lệnh sau cho phép RPC gNMI Get() và tất cả các RPC dịch vụ gNOI System.
[edit system login class grpc-operator] user@host# set allow-grpc-rpc-regexps ["/gnmi.gNMI/Get" "/gnoi.system.System/.*"] |
- Cấu hình các biểu thức chính quy cho các RPC mà lớp từ chối.
[edit system login class class-name] user@host# set deny-grpc-rpc-regexps ["regex1" "regex2" ... ] |
Ví dụ, các câu lệnh sau từ chối RPC gNMI Set() và cũng từ chối tất cả các RPC cho dịch vụ gRIBI cũng như dịch vụ gNOI CertificateManagement.
[edit system login class grpc-operator] user@host# set deny-grpc-rpc-regexps ["/gnmi.gNMI/Set" "/gribi.gRIBI/.*"] user@host# set deny-grpc-rpc-regexps "/gnoi.certificate.CertificateManagement/.*" |
- Gán lớp đăng nhập cho các người dùng gRPC phù hợp.
[edit system login] user@host# set user username class class-name |
Ví dụ, câu lệnh sau gán lớp grpc-operator cho người dùng grpc-user.
[edit system login] user@host# set user grpc-user class grpc-operator |
Sau khi bật dịch vụ gRPC trên thiết bị mạng, thiết lập hệ thống quản lý mạng từ xa làm máy khách gRPC. Để cho phép máy khách thực hiện các thao tác gNOI, hãy cấu hình máy khách theo hướng dẫn trong Cấu hình dịch vụ gNOI.
Chúc các bạn thực hiện thành công. Hi vọng bài viết này sẽ giúp ích cho các bạn trong công việc. Nếu bạn có vấn đề gì thắc mắc đừng ngần ngại liên hệ với chúng tôi theo thông tin dưới đây để được hỗ trợ thêm.
Hẹn gặp lại các bạn trong các bài viết tiếp theo !
CÔNG TY CỔ PHẦN DỊCH VỤ CÔNG NGHỆ DATECH
• Địa chỉ: Số 23E4 KĐT Cầu Diễn, Tổ 7, Phú Diễn, Bắc Từ Liêm, Hà Nội
• Điện thoại: 02432012368
• Hotline: 098 115 6699
• Email: info@datech.vn
• Website: https://datech.vn