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

rpc,security: use the tenant client cert for pod-pod communication #71248

Merged
merged 1 commit into from
Oct 11, 2021

Commits on Oct 11, 2021

  1. rpc,security: use the tenant client cert for pod-pod communication

    As of this patch, we have the following file usage:
    
    - KV nodes on host cluster:
      - ui.crt (optional):
        - used as server cert for HTTP
      - ui-ca.crt (optional):
        - used in unit tests to verify the server's identity for HTTP conns
      - node.crt:
        - used as client cert for node-to-node comms
        - used as server cert for node-to-node comms
        - used as server cert for SQL clients
        - used as server cert for incoming conns from SQL tenant servers
        - used as server cert for HTTP, if ui.crt doesn't exist
      - tenant-client-ca.crt (optional):
        - used to verify certificates from SQL tenant servers connecting as clients
      - client-ca.crt (optional);
        - used to verify client certs for SQL clients
        - used to verify client certs for SQL tenant servers, if tenant-client-ca.crt doesn't exist
      - ca.crt:
        - used to verify other node client certs for node-to-node comms
        - used in unit tests to verify the server's identity for SQL and RPC conns
        - used to verify client certs for SQL clients, if client-ca.crt doesn't exist
        - used to verify client certs for SQL tenant servers, if neither tenant-client.ca.crt nor client-ca.crt exist
    
    - SQL servers:
      - ui.crt (optional):
        - used as server cert for HTTP
      - ui-ca.crt (optional):
        - used in unit tests to verify the server's identity for HTTP conns
      - client-tenant.NN.crt:
        - used as client cert for node-to-node comms (SQL server to SQL server)
        - used as server cert for node-to-node comms (SQL server to SQL server)
        - used as client cert for conns to KV nodes
        - used as server cert for SQL clients
        - used as server cert for HTTP, if ui.crt doesn't exist
      - tenant-client-ca.crt (optional):
        - used to verify certs from other SQL tenant servers
      - client-ca.crt (optional);
        - used to verify client certs for SQL clients
        - used to verify client certs for SQL tenant servers, if tenant-client-ca.crt doesn't exist
      - ca.crt:
        - used to verify other SQL server certs for node-to-node comms, if tenant-client-ca.crt doens't exist
        - used to verify client certs for SQL clients, if client-ca.crt doesn't exist
        - used to verify client certs for SQL tenant servers, if neither tenant-client.ca.crt nor client-ca.crt exist
        - used in unit tests to verify the server's identity for SQL and  RPC conns
    
    Release note (security update): Multitenant SQL servers now reuse
    the tenant client certificate (`client-tenant.NN.crt`) for SQL-to-SQL
    communication. Existing deployments must regenerate the certificates
    with dual purpose (client and server authentication).
    knz committed Oct 11, 2021
    Configuration menu
    Copy the full SHA
    d7569da View commit details
    Browse the repository at this point in the history