-
Notifications
You must be signed in to change notification settings - Fork 702
security: add steps to validate TLS between components #21811
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
base: master
Are you sure you want to change the base?
Conversation
Signed-off-by: Yang Keao <[email protected]>
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
Summary of ChangesHello @YangKeao, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request enhances the security documentation by introducing a new section that provides clear, actionable steps for validating TLS configurations between different TiDB components. The added instructions empower users to confirm that secure communication is properly established within their TiDB clusters, thereby improving overall system security and operational confidence. Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request adds a new section to enable-tls-between-components.md
with commands to validate TLS connections for various TiDB components. The changes are clear and provide useful information for users. I've suggested a minor refactoring to improve conciseness and readability by removing repetitive text, in line with the documentation style guide.
After configuring TLS for communication between TiDB components, you can use the following commands to verify that TLS has been successfully enabled: | ||
|
||
- TiDB | ||
|
||
The following command will print out the certificate configured for TiDB and the SSL handshake details. | ||
|
||
```sh | ||
openssl s_client -connect <tidb_host>:10080 -cert /path/to/client.pem -key /path/to/client-key.pem -CAfile ./ca.crt < /dev/null | ||
``` | ||
|
||
- PD | ||
|
||
The following command will print out the certificate configured for PD and the SSL handshake details. | ||
|
||
```sh | ||
openssl s_client -connect <pd_host>:2379 -cert /path/to/client.pem -key /path/to/client-key.pem -CAfile ./ca.crt < /dev/null | ||
``` | ||
|
||
- TiKV | ||
|
||
The following command will print out the certificate configured for TiKV and the SSL handshake details. | ||
|
||
```sh | ||
openssl s_client -connect <tikv_host>:20160 -cert /path/to/client.pem -key /path/to/client-key.pem -CAfile ./ca.crt < /dev/null | ||
``` | ||
|
||
- TiFlash (New in v4.0.5) | ||
|
||
The following command will print out the certificate configured for TiFlash and the SSL handshake details. | ||
|
||
```sh | ||
openssl s_client -connect <tiflash_host>:<tiflash_port> -cert /path/to/client.pem -key /path/to/client-key.pem -CAfile ./ca.crt < /dev/null | ||
``` | ||
|
||
- TiProxy | ||
|
||
The following command will print out the certificate configured for TiProxy and the SSL handshake details. | ||
|
||
```sh | ||
openssl s_client -connect <tiproxy_host>:3080 -cert /path/to/client.pem -key /path/to/client-key.pem -CAfile ./ca.crt < /dev/null | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To improve clarity and reduce repetition, you can consolidate the descriptive text for each component into a single introductory sentence. This makes the section more concise and easier to read.1
After configuring TLS for communication between TiDB components, you can use the following commands to verify that TLS has been successfully enabled. These commands print the certificate and SSL handshake details for each component.
- TiDB
```sh
openssl s_client -connect <tidb_host>:10080 -cert /path/to/client.pem -key /path/to/client-key.pem -CAfile ./ca.crt < /dev/null
```
- PD
```sh
openssl s_client -connect <pd_host>:2379 -cert /path/to/client.pem -key /path/to/client-key.pem -CAfile ./ca.crt < /dev/null
```
- TiKV
```sh
openssl s_client -connect <tikv_host>:20160 -cert /path/to/client.pem -key /path/to/client-key.pem -CAfile ./ca.crt < /dev/null
```
- TiFlash (New in v4.0.5)
```sh
openssl s_client -connect <tiflash_host>:<tiflash_port> -cert /path/to/client.pem -key /path/to/client-key.pem -CAfile ./ca.crt < /dev/null
```
- TiProxy
```sh
openssl s_client -connect <tiproxy_host>:3080 -cert /path/to/client.pem -key /path/to/client-key.pem -CAfile ./ca.crt < /dev/null
```
Style Guide References
Footnotes
-
Avoid unnecessary words and repetition. ↩
What is changed, added or deleted? (Required)
Add several steps to validate the TLS between components.
It only applys for the components with a server. If this component only acts like a client, it's not easy to validate whether it communicates with others only through TLS (I think the only way to check this is by capturing the packet).
Which TiDB version(s) do your changes apply to? (Required)
Tips for choosing the affected version(s):
By default, CHOOSE MASTER ONLY so your changes will be applied to the next TiDB major or minor releases. If your PR involves a product feature behavior change or a compatibility change, CHOOSE THE AFFECTED RELEASE BRANCH(ES) AND MASTER.
For details, see tips for choosing the affected versions.
What is the related PR or file link(s)?
Do your changes match any of the following descriptions?