์ด ํ์ด์ง์์๋ ํด๋ผ์ด์ธํธ ๋ฐ ์๋ฒ ์ธ์ฆ ๊ธฐ๊ด(CA) ์ธ์ฆ์๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํฉ๋๋ค.
ํด๋ผ์ด์ธํธ ์ธ์ฆ์ ๊ด๋ฆฌ
๋ค์ ์ ์ฐจ์ ๋ฐ๋ผ Cloud SQL์์ ํด๋ผ์ด์ธํธ ์ธ์ฆ์๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
ํด๋ผ์ด์ธํธ ์ธ์ฆ์ ๊ฒ์
์ฌ์ฉ์๋ ํด๋ผ์ด์ธํธ ์ธ์ฆ์์ ๊ณต๊ฐ ํค ๋ถ๋ถ์ ๊ฒ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋น๊ณต๊ฐ ํค๋ ๊ฒ์ํ ์ ์์ต๋๋ค. ๋น๊ณต๊ฐ ํค๋ฅผ ๋ถ์คํ ๊ฒฝ์ฐ ์ ์ธ์ฆ์๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
์ฝ์
-
Google Cloud ์ฝ์์์ Cloud SQL ์ธ์คํด์ค ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
Cloud SQL ์ธ์คํด์ค๋ก ์ด๋
-
์ธ์คํด์ค์ ๊ฐ์ ํ์ด์ง๋ฅผ ์ด๋ ค๋ฉด ์ธ์คํด์ค ์ด๋ฆ์ ํด๋ฆญํฉ๋๋ค.
- SQL ํ์ ๋ฉ๋ด์์ ์ฐ๊ฒฐ์ ์ ํํฉ๋๋ค.
- ๋ณด์ ํญ์ ์ ํํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ ์ธ์ฆ์ ๊ด๋ฆฌ์์ ์ธ์ฆ์ ์ด๋ฆ์ ํด๋ฆญํฉ๋๋ค.
- SSL ํด๋ผ์ด์ธํธ ์ธ์ฆ์ ํ์ด์ง๊ฐ ์ด๋ฆฌ๊ณ ํด๋ผ์ด์ธํธ ์ธ์ฆ์(
client-cert.pem
)๊ฐ ํ์๋ฉ๋๋ค. ์ ์ธ์ฆ์๋ฅผ ๋ค์ด๋ก๋ํ ์ ์๋ ๋งํฌ๋ ํ์๋ฉ๋๋ค.
gcloud
ssl client-certs describe
๋ช
๋ น์ด๋ก ํด๋ผ์ด์ธํธ ์ธ์ฆ์ ๊ณต๊ฐ ํค๋ฅผ ๊ฒ์ํฉ๋๋ค.
gcloud sql ssl client-certs describe CERT_NAME \
--instance=INSTANCE_NAME \
--format="value(cert)" > client-cert.pem
REST v1
์ธ์คํด์ค์ ์ธ์ฆ์๋ฅผ ๋์ดํ์ฌ ๊ฒ์ํ๋ ค๋ ์ธ์ฆ์์ ๋์งํธ ์ง๋ฌธ์ ๊ฐ์ ธ์ต๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"kind": "sql#sslCertsList",
"items": [
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number",
"cert": "cert-value",
"commonName": "ca-server-name",
"sha1Fingerprint": "sha1Fingerprint"
"instance": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint",
"createTime": "2020-02-13T00:10:20.595Z",
"expirationTime": "2030-02-10T00:11:20.595Z"
}
]
}
๊ฒ์ํ๋ ค๋ ์ธ์ฆ์์ sha1Fingerprint
ํ๋๋ฅผ ๊ธฐ๋กํฉ๋๋ค. ๋ฐ์ดํ๋ฅผ ํฌํจํ์ง ๋ง์ธ์.
์ธ์ฆ์๋ฅผ ๊ฒ์ํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
- sha1FingerPrint: ์ธ์ฆ์์ sha1FingerPrint
HTTP ๋ฉ์๋ ๋ฐ URL:
GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number",
"cert": "cert-value",
"commonName": "ca-server-name",
"sha1Fingerprint": "sha1Fingerprint"
"instance": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint",
"createTime": "2020-02-13T00:10:20.595Z",
"expirationTime": "2030-02-10T00:11:20.595Z"
}
-
๋ฐ์ดํ๋ก ๋ฌถ์ธ ์ธ์ฆ์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ํ์ผ(์:
client-cert.pem
)์ ๋ณต์ฌํฉ๋๋ค. ๋ฐ์ดํ๋ฅผ ๋ณต์ฌํ์ง ๋ง์ธ์.
REST v1beta4
์ธ์คํด์ค์ ์ธ์ฆ์๋ฅผ ๋์ดํ์ฌ ๊ฒ์ํ๋ ค๋ ์ธ์ฆ์์ ๋์งํธ ์ง๋ฌธ์ ๊ฐ์ ธ์ต๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"kind": "sql#sslCertsList",
"items": [
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number",
"cert": "cert-value",
"commonName": "ca-server-name",
"sha1Fingerprint": "sha1Fingerprint"
"instance": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint",
"createTime": "2020-02-13T00:10:20.595Z",
"expirationTime": "2030-02-10T00:11:20.595Z"
}
]
}
๊ฒ์ํ๋ ค๋ ์ธ์ฆ์์ sha1Fingerprint
ํ๋๋ฅผ ๊ธฐ๋กํฉ๋๋ค. ๋ฐ์ดํ๋ฅผ ํฌํจํ์ง ๋ง์ธ์.
์ธ์ฆ์๋ฅผ ๊ฒ์ํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
- sha1FingerPrint: ์ธ์ฆ์์ sha1FingerPrint
HTTP ๋ฉ์๋ ๋ฐ URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number",
"cert": "cert-value",
"commonName": "ca-server-name",
"sha1Fingerprint": "sha1Fingerprint"
"instance": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint",
"createTime": "2020-02-13T00:10:20.595Z",
"expirationTime": "2030-02-10T00:11:20.595Z"
}
-
๋ฐ์ดํ๋ก ๋ฌถ์ธ ์ธ์ฆ์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ํ์ผ(์:
client-cert.pem
)์ ๋ณต์ฌํฉ๋๋ค. ๋ฐ์ดํ๋ฅผ ๋ณต์ฌํ์ง ๋ง์ธ์.
ํด๋ผ์ด์ธํธ ์ธ์ฆ์ ์ญ์
ํด๋ผ์ด์ธํธ ์ธ์ฆ์๋ฅผ ์ญ์ ํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๊ฐ ์
๋ฐ์ดํธ๋๋ฏ๋ก ๋ค์ ์์ํ ํ์๊ฐ ์์ต๋๋ค.
Console
-
Google Cloud ์ฝ์์์ Cloud SQL ์ธ์คํด์ค ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
Cloud SQL ์ธ์คํด์ค๋ก ์ด๋
-
์ธ์คํด์ค์ ๊ฐ์ ํ์ด์ง๋ฅผ ์ด๋ ค๋ฉด ์ธ์คํด์ค ์ด๋ฆ์ ํด๋ฆญํฉ๋๋ค.
- SQL ํ์ ๋ฉ๋ด์์ ์ฐ๊ฒฐ์ ์ ํํฉ๋๋ค.
- ๋ณด์ ํญ์ ์ ํํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ ์ธ์ฆ์ ๊ด๋ฆฌ์์ ์ญ์ ํ ์ธ์ฆ์๋ฅผ ์ฐพ์
์์ด์ฝ์ ํด๋ฆญํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ ์ธ์ฆ์ ์ญ์ ์ฐฝ์์ ํ์ธ์ ํด๋ฆญํฉ๋๋ค.
gcloud
ssl client-certs delete ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ ์ธ์ฆ์๋ฅผ ์ญ์ ํฉ๋๋ค.
gcloud sql ssl client-certs delete CERT_NAME \
--instance=INSTANCE_NAME
REST v1
์ธ์คํด์ค์ ์ธ์ฆ์๋ฅผ ๋์ดํ์ฌ ์ญ์ ํ๋ ค๋ ์ธ์ฆ์์ ๋์งํธ ์ง๋ฌธ์ ๊ฐ์ ธ์ต๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"kind": "sql#sslCertsList",
"items": [
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number",
"cert": "cert-value",
"commonName": "ca-server-name",
"sha1Fingerprint": "sha1Fingerprint"
"instance": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint",
"createTime": "2020-02-13T00:10:20.595Z",
"expirationTime": "2030-02-10T00:11:20.595Z"
}
]
}
์ญ์ ํ๋ ค๋ ์ธ์ฆ์์ sha1Fingerprint
ํ๋๋ฅผ ๊ธฐ๋กํฉ๋๋ค. ๋ฐ์ดํ๋ฅผ ํฌํจํ์ง ๋ง์ธ์.
์ธ์ฆ์๋ฅผ ์ญ์ ํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
- sha1FingerPrint: ์ธ์ฆ์์ sha1FingerPrint
HTTP ๋ฉ์๋ ๋ฐ URL:
DELETE https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
REST v1beta4
์ธ์คํด์ค์ ์ธ์ฆ์๋ฅผ ๋์ดํ์ฌ ์ญ์ ํ๋ ค๋ ์ธ์ฆ์์ ๋์งํธ ์ง๋ฌธ์ ๊ฐ์ ธ์ต๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"kind": "sql#sslCertsList",
"items": [
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number",
"cert": "cert-value",
"commonName": "ca-server-name",
"sha1Fingerprint": "sha1Fingerprint"
"instance": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint",
"createTime": "2020-02-13T00:10:20.595Z",
"expirationTime": "2030-02-10T00:11:20.595Z"
}
]
}
์ญ์ ํ๋ ค๋ ์ธ์ฆ์์ sha1Fingerprint
ํ๋๋ฅผ ๊ธฐ๋กํฉ๋๋ค. ๋ฐ์ดํ๋ฅผ ํฌํจํ์ง ๋ง์ธ์.
์ธ์ฆ์๋ฅผ ์ญ์ ํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
- sha1FingerPrint: ์ธ์ฆ์์ sha1FingerPrint
HTTP ๋ฉ์๋ ๋ฐ URL:
DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
์๋ฒ CA ์ธ์ฆ์ ๊ด๋ฆฌ(์ธ์คํด์ค๋ณ CA)
์ด ์น์
์์๋ Cloud SQL์์ ๋ด๋ถ์ ์ผ๋ก ์์ฑ๋ ์๋ฒ CA ์ธ์ฆ์๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํฉ๋๋ค. ์ด ์ธ์ฆ์๋ Cloud SQL์ ๊ธฐ๋ณธ ์๋ฒ CA ๋ชจ๋์
๋๋ค. ์ด ์ธ์ฆ ๊ธฐ๊ด ๊ณ์ธต ๊ตฌ์กฐ์์ Cloud SQL์ ์ธ์คํด์ค๋ง๋ค ์๋ฒ CA๋ฅผ ๋ง๋ญ๋๋ค.
์๋ฒ CA ์ธ์ฆ์ ์ํ
์ธ์ฆ์ ๋ง๋ฃ ์๋ฆผ์ ๋ฐ์๊ฑฐ๋ ์ํ์ ์์ํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์ํํ์ฌ ์ํ์ ์๋ฃํฉ๋๋ค. ์ํ์ ์์ํ๊ธฐ ์ ์ ์ธ์คํด์ค์ ์ ์๋ฒ CA๊ฐ ์์ด์ผ ํฉ๋๋ค. ์ ์๋ฒ CA๊ฐ ์ด๋ฏธ ์์ฑ๋ ๊ฒฝ์ฐ ๋ค์ ์ ์ฐจ์ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ฅผ ๊ฑด๋๋ฐ์ด๋ ๋ฉ๋๋ค.
- ์ ์๋ฒ CA๋ฅผ ๋ง๋ญ๋๋ค.
- ์ ์๋ฒ CA ์ธ์ฆ์ ์ ๋ณด๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
- ์ ์๋ฒ CA ์ธ์ฆ์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋๋ก ํด๋ผ์ด์ธํธ๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค.
- ์ํ์ ์๋ฃํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ํ์ฑํ๋ ์ธ์ฆ์๊ฐ '์ด์ ' ์ฌ๋กฏ์ผ๋ก ์ด๋ํ๊ณ ์๋ก ์ถ๊ฐ๋ ์ธ์ฆ์๊ฐ ํ์ฑ ์ธ์ฆ์๋ก ์
๋ฐ์ดํธ๋ฉ๋๋ค.
์ฝ์
PEM ํ์ผ๋ก ์ธ์ฝ๋ฉ๋ ์ ์๋ฒ CA ์ธ์ฆ์๋ฅผ ๋ก์ปฌ ํ๊ฒฝ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
-
Google Cloud ์ฝ์์์ Cloud SQL ์ธ์คํด์ค ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
Cloud SQL ์ธ์คํด์ค๋ก ์ด๋
-
์ธ์คํด์ค์ ๊ฐ์ ํ์ด์ง๋ฅผ ์ด๋ ค๋ฉด ์ธ์คํด์ค ์ด๋ฆ์ ํด๋ฆญํฉ๋๋ค.
- SQL ํ์ ๋ฉ๋ด์์ ์ฐ๊ฒฐ์ ์ ํํฉ๋๋ค.
- ๋ณด์ ํญ์ ์ ํํฉ๋๋ค.
- ์ธ์ฆ์ ๊ด๋ฆฌ๋ฅผ ํด๋ฆญํ์ฌ ํผ์นฉ๋๋ค.
- CA ์ธ์ฆ์ ์ํ์ ์ ํํฉ๋๋ค.
์ ๊ฒฉํ ์ธ์ฆ์๊ฐ ์์ผ๋ฉด ์ํ ์ต์
์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ ์๋ฒ CA ์ธ์ฆ์๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
- ์ธ์ฆ์ ๋ค์ด๋ก๋๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ค์ด๋ก๋๋ ํ์ผ์ ํด๋ผ์ด์ธํธ ํธ์คํธ ๋จธ์ ์ ๋ณต์ฌํ์ฌ ๊ธฐ์กด server-ca.pem
ํ์ผ์ ๋์ฒดํด์ ์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋๋ก ๋ชจ๋ ๊ธฐ์กด PostgreSQL ํด๋ผ์ด์ธํธ๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค.
ํด๋ผ์ด์ธํธ๋ฅผ ์
๋ฐ์ดํธํ ํ ์ํ์ ์๋ฃํฉ๋๋ค.
- ๋ณด์ ํญ์ผ๋ก ๋์๊ฐ๋๋ค.
- ์ธ์ฆ์ ๊ด๋ฆฌ๋ฅผ ํด๋ฆญํ์ฌ ํผ์นฉ๋๋ค.
- CA ์ธ์ฆ์ ์ํ์ ์ ํํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ฐ๊ฒฐ๋๋์ง ํ์ธํฉ๋๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์๋ก ์ํ๋ ์ธ์ฆ์๋ฅผ ํตํด ์ฐ๊ฒฐ๋์ง ์์ผ๋ฉด CA ์ธ์ฆ์ ๋กค๋ฐฑ์ ์ ํํ์ฌ ์ด์ ๊ตฌ์ฑ์ผ๋ก ๋กค๋ฐฑํ ์ ์์ต๋๋ค.
gcloud
- ์๋ฒ CA ์ธ์ฆ์๋ฅผ ๋ง๋ญ๋๋ค.
gcloud sql ssl server-ca-certs create \
--instance=INSTANCE
- ์ธ์ฆ์ ์ ๋ณด๋ฅผ ๋ก์ปฌ PEM ํ์ผ๋ก ๋ค์ด๋ก๋ํฉ๋๋ค.
gcloud sql ssl server-ca-certs list \
--format="value(cert)" \
--instance=INSTANCE_NAME > \
FILE_PATH/FILE_NAME.pem
- ๋ค์ด๋ก๋๋ ํ์ผ์ ํด๋ผ์ด์ธํธ ํธ์คํธ ๋จธ์ ์ ๋ณต์ฌํ๊ณ ๊ธฐ์กด server-ca.pem ํ์ผ์ ๋์ฒดํ์ฌ ๋ชจ๋ ํด๋ผ์ด์ธํธ์์ ์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋๋ก ์
๋ฐ์ดํธํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ๋ฅผ ์
๋ฐ์ดํธํ ํ ์ํ์ ์๋ฃํฉ๋๋ค.
gcloud sql ssl server-ca-certs rotate \
--instance=INSTANCE_NAME
- ํด๋ผ์ด์ธํธ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ฐ๊ฒฐ๋๋์ง ํ์ธํฉ๋๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์๋ก ์ํ๋ ์ธ์ฆ์๋ฅผ ํตํด ์ฐ๊ฒฐ๋์ง ์๋ ๊ฒฝ์ฐ ์ด์ ๊ตฌ์ฑ์ผ๋ก ๋กค๋ฐฑํ ์ ์์ต๋๋ค.
REST v1
- ์๋ฒ CA ์ธ์ฆ์๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/listServerCas
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/listServerCas"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/listServerCas" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"certs": [
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number",
"cert": "cert-value",
"commonName": "ca-server-name",
"sha1Fingerprint": "sha1Fingerprint",
"instance": "instance-id",
"createTime": "2020-02-10T17:18:54.935Z",
"expirationTime": "2030-02-07T17:19:54.935Z"
},
{
"kind": "sql#sslCert",
certSerialNumber": "cert-serial-number",
"cert": "cert-value",
"commonName": "ca-server-name",
"sha1Fingerprint": "sha1Fingerprint",
"instance": "instance-id",
"createTime": "2019-11-14T22:43:56.458Z",
"expirationTime": "2029-11-11T22:44:56.458Z"
}
],
"activeVersion": "active-version",
"kind": "sql#instancesListServerCas"
}
- ์ํ์ ์๋ฃํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/rotateServerCa
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/rotateServerCa"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/rotateServerCa" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
REST v1beta4
- ์๋ฒ CA ์ธ์ฆ์๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/listServerCas
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/listServerCas"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/listServerCas" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"certs": [
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number",
"cert": "cert-value",
"commonName": "ca-server-name",
"sha1Fingerprint": "sha1Fingerprint",
"instance": "instance-id",
"createTime": "2020-02-10T17:18:54.935Z",
"expirationTime": "2030-02-07T17:19:54.935Z"
},
{
"kind": "sql#sslCert",
certSerialNumber": "cert-serial-number",
"cert": "cert-value",
"commonName": "ca-server-name",
"sha1Fingerprint": "sha1Fingerprint",
"instance": "instance-id",
"createTime": "2019-11-14T22:43:56.458Z",
"expirationTime": "2029-11-11T22:44:56.458Z"
}
],
"activeVersion": "active-version",
"kind": "sql#instancesListServerCas"
}
- ์ํ์ ์๋ฃํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/rotateServerCa
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/rotateServerCa"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/rotateServerCa" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
No upcoming/previous Server CA Certificate exists
๋ผ๊ณ ํ์๋ ์ธ์ฆ์๋ฅผ ์ํํ๋ ค๊ณ ํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์ธ์คํด์ค๋ณ CA ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ ์ธ์คํด์ค์์ ๋ช
๋ น์ด๋ฅผ ์คํํ๊ณ ์๋์ง ํ์ธํฉ๋๋ค.
gcloud sql instances describe
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ Cloud SQL ์ธ์คํด์ค์ ๊ตฌ์ฑ๋ CA ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ ์ธ์คํด์ค ์ ๋ณด ๋ณด๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ธ์ฆ์ ์ํ ์์
๋กค๋ฐฑ
์ธ์ฆ์ ์ํ์ ์๋ฃํ๊ณ ๋๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ๋ชจ๋ ์ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ Cloud SQL ์ธ์คํด์ค์ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์ ์ธ์ฆ์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋๋ก ์ฌ๋ฐ๋ฅด๊ฒ ์
๋ฐ์ดํธ๋์ง ์์ผ๋ฉด SSL/TLS๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ์๋ ์ด์ ์ธ์ฆ์ ๊ตฌ์ฑ์ผ๋ก ๋กค๋ฐฑํ ์ ์์ต๋๋ค.
๋กค๋ฐฑ ์์
์ ํ์ฑํ๋ ์ธ์ฆ์๋ฅผ '์์ ' ์ฌ๋กฏ์ผ๋ก ์ฎ๊น๋๋ค(๋ชจ๋ '์์ ' ์ธ์ฆ์๊ฐ ๋์ฒด๋จ). '์ด์ ' ์ธ์ฆ์๊ฐ ํ์ฑ ์ธ์ฆ์๊ฐ ๋๊ณ , ์ธ์ฆ์ ๊ตฌ์ฑ์ด ์ํ์ด ์๋ฃ๋๊ธฐ ์ด์ ์ ์ํ๋ก ๋์๊ฐ๋๋ค.
์ด์ ์ธ์ฆ์ ๊ตฌ์ฑ์ผ๋ก ๋กค๋ฐฑํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์ฝ์
-
Google Cloud ์ฝ์์์ Cloud SQL ์ธ์คํด์ค ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
Cloud SQL ์ธ์คํด์ค๋ก ์ด๋
-
์ธ์คํด์ค์ ๊ฐ์ ํ์ด์ง๋ฅผ ์ด๋ ค๋ฉด ์ธ์คํด์ค ์ด๋ฆ์ ํด๋ฆญํฉ๋๋ค.
- SQL ํ์ ๋ฉ๋ด์์ ์ฐ๊ฒฐ์ ์ ํํฉ๋๋ค.
- ๋ณด์ ํญ์ ์ ํํฉ๋๋ค.
- ์ธ์ฆ์ ๊ด๋ฆฌ๋ฅผ ํด๋ฆญํ์ฌ ํผ์นฉ๋๋ค.
- CA ์ธ์ฆ์ ๋กค๋ฐฑ์ ์ ํํฉ๋๋ค.
์ ๊ฒฉํ ์ธ์ฆ์๊ฐ ์์ผ๋ฉด ๋กค๋ฐฑ ์ต์
์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋กค๋ฐฑ ์์
์ ๋ช ์ด ํ์ ์๋ฃ๋ฉ๋๋ค.
gcloud
gcloud sql ssl server-ca-certs rollback \
--instance=INSTANCE_NAME
REST v1
- ์๋ฒ CA ์ธ์ฆ์๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/listServerCas
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/listServerCas"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/listServerCas" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"certs": [
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number",
"cert": "cert-value",
"commonName": "ca-server-name",
"sha1Fingerprint": "sha1Fingerprint",
"instance": "instance-id",
"createTime": "2020-02-10T17:18:54.935Z",
"expirationTime": "2030-02-07T17:19:54.935Z"
},
{
"kind": "sql#sslCert",
certSerialNumber": "cert-serial-number",
"cert": "cert-value",
"commonName": "ca-server-name",
"sha1Fingerprint": "sha1Fingerprint",
"instance": "instance-id",
"createTime": "2019-11-14T22:43:56.458Z",
"expirationTime": "2029-11-11T22:44:56.458Z"
}
],
"activeVersion": "active-version",
"kind": "sql#instancesListServerCas"
}
- ๋กค๋ฐฑํ๋ ค๋ ๋ฒ์ ์
sha1Fingerprint
ํ๋๋ฅผ ๋ณต์ฌํฉ๋๋ค.activeVersion
์ผ๋ก ํ์๋๋ sha1Fingerprint ๊ฐ์ ํฌํจํ ๋ฒ์ ์ ๋ฐ๋ก ์ด์ ๋ฒ์ (createTime ๊ฐ ํฌํจ)์ ์ฐพ์ต๋๋ค.
- ์ํ์ ๋กค๋ฐฑํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/rotateServerCa
JSON ์์ฒญ ๋ณธ๋ฌธ:
{
"rotateServerCaContext": {"nextVersion": "sha1Fingerprint"}
}
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/rotateServerCa"
PowerShell(Windows)
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/rotateServerCa" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
REST v1beta4
- ์๋ฒ CA ์ธ์ฆ์๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/listServerCas
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/listServerCas"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/listServerCas" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"certs": [
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number",
"cert": "cert-value",
"commonName": "ca-server-name",
"sha1Fingerprint": "sha1Fingerprint",
"instance": "instance-id",
"createTime": "2020-02-10T17:18:54.935Z",
"expirationTime": "2030-02-07T17:19:54.935Z"
},
{
"kind": "sql#sslCert",
certSerialNumber": "cert-serial-number",
"cert": "cert-value",
"commonName": "ca-server-name",
"sha1Fingerprint": "sha1Fingerprint",
"instance": "instance-id",
"createTime": "2019-11-14T22:43:56.458Z",
"expirationTime": "2029-11-11T22:44:56.458Z"
}
],
"activeVersion": "active-version",
"kind": "sql#instancesListServerCas"
}
- ๋กค๋ฐฑํ๋ ค๋ ๋ฒ์ ์
sha1Fingerprint
ํ๋๋ฅผ ๋ณต์ฌํฉ๋๋ค.activeVersion
์ผ๋ก ํ์๋๋ sha1Fingerprint ๊ฐ์ ํฌํจํ ๋ฒ์ ์ ๋ฐ๋ก ์ด์ ๋ฒ์ (createTime ๊ฐ ํฌํจ)์ ์ฐพ์ต๋๋ค.
- ์ํ์ ๋กค๋ฐฑํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/rotateServerCa
JSON ์์ฒญ ๋ณธ๋ฌธ:
{
"rotateServerCaContext": {"nextVersion": "sha1Fingerprint"}
}
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/rotateServerCa"
PowerShell(Windows)
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/rotateServerCa" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
No upcoming/previous Server CA Certificate exists
๋ผ๊ณ ํ์๋ ์ธ์ฆ์ CA ์ํ์ ๋กค๋ฐฑํ๋ ค๊ณ ํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์ธ์คํด์ค๋ณ CA ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ ์ธ์คํด์ค์์ ๋ช
๋ น์ด๋ฅผ ์คํํ๊ณ ์๋์ง ํ์ธํฉ๋๋ค.
gcloud sql instances describe
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ Cloud SQL ์ธ์คํด์ค์ ๊ตฌ์ฑ๋ CA ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ ์ธ์คํด์ค ์ ๋ณด ๋ณด๊ธฐ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์ํ ์์
Cloud SQL์ ์ด๋ฉ์ผ์ ๊ธฐ๋ค๋ ธ๋ค๊ฐ ์ํ์ ์์ํ ํ์๋ ์์ต๋๋ค.
์ธ์ ๋ ์ง ์ํ์ ์์ํด๋ ๋ฉ๋๋ค. ์ํ์ ์์ํ๋ฉด ์ ์ธ์ฆ์๊ฐ ์์ฑ๋์ด '์์ ' ์ฌ๋กฏ์ ๋ฐฐ์น๋ฉ๋๋ค. ์์ฒญ ์์ ์ ์ธ์ฆ์๊ฐ '์์ ' ์ฌ๋กฏ์ ์ด๋ฏธ ์๋ ๊ฒฝ์ฐ ํด๋น ์ธ์ฆ์๋ ์ญ์ ๋ฉ๋๋ค.
์์ ๋ ์ธ์ฆ์๋ 1๊ฐ๋ง ์์ ์ ์์ต๋๋ค.
์ํ์ ์์ํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์ฝ์
-
Google Cloud ์ฝ์์์ Cloud SQL ์ธ์คํด์ค ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
Cloud SQL ์ธ์คํด์ค๋ก ์ด๋
-
์ธ์คํด์ค์ ๊ฐ์ ํ์ด์ง๋ฅผ ์ด๋ ค๋ฉด ์ธ์คํด์ค ์ด๋ฆ์ ํด๋ฆญํฉ๋๋ค.
- SQL ํ์ ๋ฉ๋ด์์ ์ฐ๊ฒฐ์ ์ ํํฉ๋๋ค.
- ๋ณด์ ํญ์ ์ ํํฉ๋๋ค.
- ์ธ์ฆ์ ๊ด๋ฆฌ๋ฅผ ํด๋ฆญํ์ฌ ํผ์นฉ๋๋ค.
- ์ CA ์ธ์ฆ์ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- CA ์ธ์ฆ์ ์ํ์ ์ ํํฉ๋๋ค.
์ ๊ฒฉํ ์ธ์ฆ์๊ฐ ์์ผ๋ฉด ์ํ ์ต์
์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์๋ฒ CA ์ธ์ฆ์ ์ํ์ ์ค๋ช
๋ ๋๋ก ์ํ์ ์๋ฃํฉ๋๋ค.
gcloud
- ์ํ์ ์์ํฉ๋๋ค.
gcloud sql ssl server-ca-certs create \
--instance=INSTANCE_NAME
- ์๋ฒ CA ์ธ์ฆ์ ์ํ์ ์ค๋ช
๋ ๋๋ก ์ํ์ ์๋ฃํฉ๋๋ค.
REST v1
-
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/rotateServerCa
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/rotateServerCa"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/rotateServerCa" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
- ์๋ฒ CA ์ธ์ฆ์ ์ํ์ ์ค๋ช
๋ ๋๋ก ์ํ์ ์๋ฃํฉ๋๋ค.
REST v1beta4
-
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/rotateServerCa
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/rotateServerCa"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/rotateServerCa" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
- ์๋ฒ CA ์ธ์ฆ์ ์ํ์ ์ค๋ช
๋ ๋๋ก ์ํ์ ์๋ฃํฉ๋๋ค.
์๋ฒ CA ์ธ์ฆ์์ ๋ํ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ
์๋ฒ CA ์ธ์ฆ์๊ฐ ๋ง๋ฃ๋๋ ์๊ธฐ, ์๋ฒ ์ธ์ฆ์๊ฐ ์ ๊ณตํ๋ ์ํธํ ์์ค๊ณผ ๊ฐ์ ์๋ฒ ์ธ์ฆ์ ๊ด๋ จ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์ฝ์
-
Google Cloud ์ฝ์์์ Cloud SQL ์ธ์คํด์ค ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
Cloud SQL ์ธ์คํด์ค๋ก ์ด๋
-
์ธ์คํด์ค์ ๊ฐ์ ํ์ด์ง๋ฅผ ์ด๋ ค๋ฉด ์ธ์คํด์ค ์ด๋ฆ์ ํด๋ฆญํฉ๋๋ค.
- SQL ํ์ ๋ฉ๋ด์์ ์ฐ๊ฒฐ์ ์ ํํฉ๋๋ค.
- ๋ณด์ ํญ์ ์ ํํฉ๋๋ค.
์๋ฒ CA ์ธ์ฆ์ ๊ด๋ฆฌ์ ํ์์ ์๋ฒ CA ์ธ์ฆ์์ ๋ง๋ฃ์ผ์ ํ์ธํ ์ ์์ต๋๋ค.
์ธ์ฆ์ ์ ํ์ ํ์ธํ๋ ค๋ฉด gcloud sql ssl server-ca-certs list --instance=INSTANCE_NAME
๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud
gcloud sql ssl server-ca-certs list \
--instance=INSTANCE_NAME
REST v1
์ธ์คํด์ค๋ฅผ ์ค๋ช
ํ ๋ ์๋ฒ CA ์ธ์ฆ์์ ๋ํ ์ธ๋ถ์ ๋ณด๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=serverCaCert
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=serverCaCert"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=serverCaCert" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"serverCaCert":
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number",
"cert": "cert-value-",
"commonName": "ca-server-name",
"sha1Fingerprint": "sha1Fingerprint",
"instance": "instance-id",
"createTime": "2020-02-10T17:18:54.935Z",
"expirationTime": "2030-02-07T17:19:54.935Z"
}
}
REST v1beta4
์ธ์คํด์ค๋ฅผ ์ค๋ช
ํ ๋ ์๋ฒ CA ์ธ์ฆ์์ ๋ํ ์ธ๋ถ์ ๋ณด๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=serverCaCert
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=serverCaCert"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=serverCaCert" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"serverCaCert":
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number",
"cert": "cert-value-",
"commonName": "ca-server-name",
"sha1Fingerprint": "sha1Fingerprint",
"instance": "instance-id",
"createTime": "2020-02-10T17:18:54.935Z",
"expirationTime": "2030-02-07T17:19:54.935Z"
}
}
CA ์ธ์ฆ์ ์ฝํ
์ธ ๋ณด๊ธฐ
openssl storeutl
์ ์ฌ์ฉํ์ฌ CA ์ธ์ฆ์ ์ฝํ
์ธ ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
sql ssl server-ca-certs list ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด ์ด์ ์ํ ๊ด๋ จ ์์
์์ CA ์ธ์ฆ์ ์ฌ๋ฌ ๊ฐ๊ฐ ๋ฐํ๋ ์ ์์ต๋๋ค.
gcloud
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud sql ssl server-ca-certs list \
--instance=INSTANCE_NAME \
--format='value(cert)' > temp_cert.pem
INSTANCE_NAME์ ์ธ์คํด์ค ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
openssl
์ ์ฌ์ฉํ์ฌ CA ์ธ์ฆ์ ์ฝํ
์ธ ๋ฅผ ๊ฒ์ฌํฉ๋๋ค.
openssl storeutl -noout -text temp_cert.pem
์๋ฒ ์ธ์ฆ์ ์ฝํ
์ธ ๋ณด๊ธฐ
openssl s_client
๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ ์ธ์ฆ์ ์ฝํ
์ธ ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
gcloud
์๋ฒ ์ธ์ฆ์ ์ฝํ
์ธ ๋ฅผ ๋ณด๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
openssl s_client -starttls postgres -connect INSTANCE_IP_ADDRESS:5432
INSTANCE_IP_ADDRESS๋ฅผ ์ธ์คํด์ค IP ์ฃผ์๋ก ๋ฐ๊ฟ๋๋ค.
์ธ๋ถ ์๋ฒ SSL ๋ง๋ฃ ์๋ฆผ
- ์ธ๋ถ ์๋ฒ์ ์๋ฒ CA ์ธ์ฆ์๊ฐ ๋ง๋ฃ๋๋ฉด ์จํ๋ ๋ฏธ์ค ์ธ์คํด์ค์ ์๋ฒ CA ์ธ์ฆ์๋ฅผ ํฌํจํ์ฌ SSL ์ธ์ฆ์๋ฅผ ์ํํฉ๋๋ค. ์ด ๋จ๊ณ๋ ์จํ๋ ๋ฏธ์ค ์ธ์คํด์ค๊ฐ ๊ด๋ฆฌ๋๋ ๋ฐฉ์์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค. ์๋ฅผ ๋ค์ด RDS ์๋ฒ CA ์ธ์ฆ์, Cloud SQL ์๋ฒ CA ์ธ์ฆ์ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ผ๋ฐ ์๋ฒ CA ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋จ๊ณ๊ฐ ๋ค๋ฅผ ์ ์์ต๋๋ค.
- ํด๋ผ์ด์ธํธ ์ธ์ฆ์๊ฐ ๋ง๋ฃ๋๋ฉด ์ ์ธ์ฆ์์ ํค๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. ์ด๋ Google Cloud๊ด๋ฆฌํ SSL ์ธ์ฆ์์ ์์ฒด ์๋ช
์ธ์ฆ์ ๋ชจ๋์ ์ ์ฉ๋ฉ๋๋ค.
- ์ SSL ์ธ์ฆ์๋ก Cloud SQL ์์ค ํํ ์ธ์คํด์ค๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค.
์๋ฒ ์ธ์ฆ์ ๊ด๋ฆฌ(๊ณต์ CA)
์ด ์น์
์์๋ ๊ณต์ CA ๋๋ ๊ณ ๊ฐ ๊ด๋ฆฌ CA๋ฅผ ์ฌ์ฉํ๋ ์ธ์คํด์ค์์ ์๋ฒ ์ธ์ฆ์๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํฉ๋๋ค.
์ธ์คํด์ค๋ฅผ ๋ง๋ค ๋ serverCaMode
์ค์ (Cloud SQL Admin API)์ GOOGLE_MANAGED_CAS_CA
๋ฅผ ์ง์ ํ๊ฑฐ๋ --server-ca-mode
ํ๋๊ทธ(gcloud CLI)๋ฅผ ์ง์ ํ์ฌ ๊ณต์ CA๋ฅผ ์ธ์คํด์ค์ ์๋ฒ CA ๋ชจ๋๋ก ์ฌ์ฉํ๋๋ก ์ ํํ ์ ์์ต๋๋ค.
๊ณ ๊ฐ ๊ด๋ฆฌ CA๋ฅผ ์ธ์คํด์ค์ ์๋ฒ CA ๋ชจ๋๋ก ์ฌ์ฉํ๋ ค๋ฉด ์ธ์คํด์ค๋ฅผ ๋ง๋ค ๋ serverCaMode
์ค์ (Cloud SQL Admin API)์ CUSTOMER_MANAGED_CAS_CA
๋ฅผ ์ง์ ํ๊ฑฐ๋ --server-ca-mode
ํ๋๊ทธ(gcloud CLI)๋ฅผ ์ง์ ํด์ผ ํ๋ฉฐ ์ ํจํ CA ํ๊ณผ CA๊ฐ ์์ด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ณ ๊ฐ ๊ด๋ฆฌ CA ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.
์๋ฒ ์ธ์ฆ์ ์ํ
์๋ฒ ์ธ์ฆ์ ๋ง๋ฃ ์๋ฆผ์ ๋ฐ์๊ฑฐ๋ ์ํ์ ์์ํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์ํํ์ฌ ์ํ์ ์๋ฃํฉ๋๋ค.
์ํ์ ์์ํ๊ธฐ ์ ์ ์์ ๋ ์ํ์ ์ํด ์ ์๋ฒ ์ธ์ฆ์๊ฐ ์์ฑ๋์ด ์์ด์ผ ํฉ๋๋ค. ์์ ๋ ์ํ์ ์ํด ์ด๋ฏธ ์ ์๋ฒ ์ธ์ฆ์๊ฐ ์์ฑ๋ ๊ฒฝ์ฐ ๋ค์ ์ ์ฐจ์ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ฅผ ๊ฑด๋๋ฐ์ด๋ ๋ฉ๋๋ค.
์ธ์คํด์ค์์ ์๋ฒ ์ธ์ฆ์๋ฅผ ์ํํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค.
์ ์๋ฒ ์ธ์ฆ์๊ฐ ํ์ํ๋ฉด ์๋ฒ ์ธ์ฆ์๋ฅผ ๋ง๋ญ๋๋ค.
ํด๋ผ์ด์ธํธ์์ ์ด๋ฏธ ๋ฃจํธ CA๋ฅผ ์ ๋ขฐํ๋ ๊ฒฝ์ฐ ์ด ๋จ๊ณ๋ ์ ํ์ฌํญ์
๋๋ค. ๊ทธ๋ฌ๋ ์๋ฒ CA ์ ๋ณด๋ก ํด๋ผ์ด์ธํธ๋ฅผ ์
๋ฐ์ดํธํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ๋ค์์ ์ํํฉ๋๋ค.
- ์ต์ ์๋ฒ CA ์ ๋ณด๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ์์ ์ต์ ์๋ฒ CA ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋๋ก ์
๋ฐ์ดํธํฉ๋๋ค.
ํ์ฑ ์ธ์ฆ์๋ฅผ ์ด์ ์ฌ๋กฏ์ผ๋ก ์ด๋ํ๊ณ ์ ์ธ์ฆ์๊ฐ ํ์ฑ ์ธ์ฆ์๊ฐ ๋๋๋ก ์
๋ฐ์ดํธํ์ฌ ์ํ์ ์๋ฃํฉ๋๋ค.
์ฝ์
PEM ํ์ผ๋ก ์ธ์ฝ๋ฉ๋ ์๋ฒ CA ์ธ์ฆ์ ์ ๋ณด๋ฅผ ๋ก์ปฌ ํ๊ฒฝ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
-
Google Cloud ์ฝ์์์ Cloud SQL ์ธ์คํด์ค ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
Cloud SQL ์ธ์คํด์ค๋ก ์ด๋
-
์ธ์คํด์ค์ ๊ฐ์ ํ์ด์ง๋ฅผ ์ด๋ ค๋ฉด ์ธ์คํด์ค ์ด๋ฆ์ ํด๋ฆญํฉ๋๋ค.
- SQL ํ์ ๋ฉ๋ด์์ ์ฐ๊ฒฐ์ ์ ํํฉ๋๋ค.
- ๋ณด์ ํญ์ ์ ํํฉ๋๋ค.
- ์ธ์ฆ์ ๊ด๋ฆฌ๋ฅผ ํด๋ฆญํ์ฌ ํผ์นฉ๋๋ค.
- ์๋ฒ ์ธ์ฆ์ ์ํ ์ต์
์ด ์ฌ์ฉ ๊ฐ๋ฅํ ์ต์
์ผ๋ก ํ์๋๋์ง ํ์ธํฉ๋๋ค. ๊ทธ๋ฌ๋ ์์ง ์ ํํ์ง ๋ง์ธ์.
์ ๊ฒฉํ ์ธ์ฆ์๊ฐ ์์ผ๋ฉด ์ํ ์ต์
์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ ์๋ฒ ์ธ์ฆ์๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
- ์ธ์ฆ์ ๋ค์ด๋ก๋๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ค์ด๋ก๋๋ ํ์ผ์ ํด๋ผ์ด์ธํธ ํธ์คํธ ๋จธ์ ์ ๋ณต์ฌํ์ฌ ๊ธฐ์กด server-ca.pem
ํ์ผ์ ๋์ฒดํด์ ์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋๋ก ๋ชจ๋ ๊ธฐ์กด PostgreSQL ํด๋ผ์ด์ธํธ๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค.
ํด๋ผ์ด์ธํธ๋ฅผ ์
๋ฐ์ดํธํ ํ ์ํ์ ์๋ฃํฉ๋๋ค.
- ๋ณด์ ํญ์ผ๋ก ๋์๊ฐ๋๋ค.
- ์ธ์ฆ์ ๊ด๋ฆฌ๋ฅผ ํด๋ฆญํ์ฌ ํผ์นฉ๋๋ค.
- ์ธ์ฆ์ ์ํ์ ์ ํํฉ๋๋ค.
- ์ธ์ฆ์ ์ํ ํ์ธ ๋ํ์์์์ ์ํ์ ํด๋ฆญํฉ๋๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ฐ๊ฒฐ๋๋์ง ํ์ธํฉ๋๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์๋ก ์ํ๋ ์ธ์ฆ์๋ฅผ ํตํด ์ฐ๊ฒฐ๋์ง ์์ผ๋ฉด ์ธ์ฆ์ ๋กค๋ฐฑ์ ์ ํํ์ฌ ์ด์ ๊ตฌ์ฑ์ผ๋ก ๋กค๋ฐฑํ ์ ์์ต๋๋ค.
gcloud
- ์๋ฒ ์ธ์ฆ์๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
gcloud sql ssl server-certs create \
--instance=INSTANCE
INSTANCE์ ์ธ์คํด์ค ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
- ์ต์ CA ๋ฒ๋ค์ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํฉ๋๋ค.
์ต์ CA ๋ฒ๋ค์ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ์ฌ ์ธ์คํด์ค์ ์ต์ ์๋ฒ CA ์ ๋ณด๋ฅผ ๋ก์ปฌ PEM ํ์ผ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
gcloud sql ssl server-certs list \
--format="value(ca_cert.cert)" \
--instance=INSTANCE_NAME > \
FILE_PATH/server-ca.pem
๋๋ ์ด ํ์ด์ง์ ๋ฃจํธ ๋ฐ ๋ฆฌ์ CA ์ธ์ฆ์ ๋ฒ๋ค ํ์์ CA ๋ฒ๋ค์ ๋ค์ด๋ก๋ํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ๋ค์ด๋ก๋ํ ํ์ผ์ ํด๋ผ์ด์ธํธ ํธ์คํธ ๋จธ์ ์ ๋ณต์ฌํ๊ณ ๊ธฐ์กด server-ca.pem
ํ์ผ์ ๋์ฒดํ์ฌ ๋ชจ๋ ํด๋ผ์ด์ธํธ์์ ์ ์๋ฒ CA ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋๋ก ์
๋ฐ์ดํธํฉ๋๋ค.
- ๋ชจ๋ ํด๋ผ์ด์ธํธ๋ฅผ ์
๋ฐ์ดํธํ ํ(ํด๋ผ์ด์ธํธ ์
๋ฐ์ดํธ๊ฐ ํ์ํ ๊ฒฝ์ฐ) ์ํ์ ์๋ฃํฉ๋๋ค.
gcloud sql ssl server-certs rotate \
--instance=INSTANCE_NAME
ํด๋ผ์ด์ธํธ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ฐ๊ฒฐ๋๋์ง ํ์ธํฉ๋๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์๋ก ์ํ๋ ์๋ฒ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ๋์ง ์์ผ๋ฉด ์ด์ ๊ตฌ์ฑ์ผ๋ก ๋กค๋ฐฑํฉ๋๋ค.
REST v1
์๋ฒ ์ธ์ฆ์๋ฅผ ๋ง๋ญ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_ID: ํ๋ก์ ํธ ID
- INSTANCE_ID: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/addServerCertificate
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/addServerCertificate"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/addServerCertificate" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2024-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
์๋ฒ CA ์ธ์ฆ์ ์ ๋ณด๋ฅผ ๋ค์ด๋ก๋ํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_ID: ํ๋ก์ ํธ ID
- INSTANCE_ID: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/listServerCertificates
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/listServerCertificates"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/listServerCertificates" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"caCerts": [
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_CA_CERT_ONE",
"cert": "CERT_VALUE",
"commonName": "CA_SERVER_NAME",
"sha1Fingerprint": "sha1Fingerprint_CA_CERT_ONE",
"instance": "INSTANCE_NAME",
"createTime": "2024-07-10T17:18:54.935Z",
"expirationTime": "2034-07-10T17:19:54.935Z"
},
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_CA_CERT_TWO",
"cert": "CERT_VALUE",
"commonName": "CA_SERVER_NAME",
"sha1Fingerprint": "sha1Fingerprint_CA_CERT_TWO",
"instance": "INSTANCE_NAME",
"createTime": "2024-07-14T22:43:56.458Z",
"expirationTime": "2034-11-11T22:44:56.458Z"
}
],
"serverCerts": [
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_SERVER_CERT_ONE",
"cert": "CERT_VALUE"
"commonName": "SUBJECT_VALUE",
"sha1Fingerprint": "sha1Fingerprint_SERVER_CERT_ONE",
"instance": "INSTANCE_NAME",
"createTime": "2024-09-16T18:11:39Z",
"expirationTime": "2025-09-16T18:11:38Z"
},
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_SERVER_CERT_TWO",
"cert": "CERT_VALUE"
"commonName": "SUBJECT_VALUE",
"sha1Fingerprint": "sha1Fingerprint_SERVER_CERT_TWO",
"instance": "INSTANCE_NAME",
"createTime": "2024-09-10T20:56:06Z",
"expirationTime": "2025-09-10T20:56:05Z"
}
],
"activeVersion": "sha1Fingerprint_SERVER_CERT_TWO",
"kind": "sql#instancesListServerCertificates"
}
์ํ์ ์๋ฃํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_ID: ํ๋ก์ ํธ ID
- INSTANCE_ID: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/rotateServerCertificate
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/rotateServerCertificate"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/rotateServerCertificate" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2024-09-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "operation-id",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/operation-id",
"targetProject": "PROJECT_ID"
}
REST v1beta4
์๋ฒ ์ธ์ฆ์๋ฅผ ๋ง๋ญ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_ID: ํ๋ก์ ํธ ID
- INSTANCE_ID: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/addServerCertificate
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/addServerCertificate"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/addServerCertificate" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2024-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
์๋ฒ CA ์ธ์ฆ์ ์ ๋ณด๋ฅผ ๋ค์ด๋ก๋ํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_ID: ํ๋ก์ ํธ ID
- INSTANCE_ID: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/listServerCertificates
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/listServerCertificates"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/listServerCertificates" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"caCerts": [
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_CA_CERT_ONE",
"cert": "CERT_VALUE",
"commonName": "CA_SERVER_NAME",
"sha1Fingerprint": "sha1Fingerprint_CA_CERT_ONE",
"instance": "INSTANCE_NAME",
"createTime": "2024-07-10T17:18:54.935Z",
"expirationTime": "2034-07-10T17:19:54.935Z"
},
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_CA_CERT_TWO",
"cert": "CERT_VALUE",
"commonName": "CA_SERVER_NAME",
"sha1Fingerprint": "sha1Fingerprint_CA_CERT_TWO",
"instance": "INSTANCE_NAME",
"createTime": "2024-07-14T22:43:56.458Z",
"expirationTime": "2034-11-11T22:44:56.458Z"
}
],
"serverCerts": [
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_SERVER_CERT_ONE",
"cert": "CERT_VALUE"
"commonName": "SUBJECT_VALUE",
"sha1Fingerprint": "sha1Fingerprint_SERVER_CERT_ONE",
"instance": "INSTANCE_NAME",
"createTime": "2024-09-16T18:11:39Z",
"expirationTime": "2025-09-16T18:11:38Z"
},
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_SERVER_CERT_TWO",
"cert": "CERT_VALUE"
"commonName": "SUBJECT_VALUE",
"sha1Fingerprint": "sha1Fingerprint_SERVER_CERT_TWO",
"instance": "INSTANCE_NAME",
"createTime": "2024-09-10T20:56:06Z",
"expirationTime": "2025-09-10T20:56:05Z"
}
],
"activeVersion": "sha1Fingerprint_SERVER_CERT_TWO",
"kind": "sql#instancesListServerCertificates"
}
์ํ์ ์๋ฃํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_ID: ํ๋ก์ ํธ ID
- INSTANCE_ID: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/rotateServerCertificate
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/rotateServerCertificate"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/rotateServerCertificate" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2024-09-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
์ธ์ฆ์ ์ํ ๋กค๋ฐฑ
์๋ฒ ์ธ์ฆ์ ์ํ์ ์๋ฃํ ํ์๋ ๋ชจ๋ ํด๋ผ์ด์ธํธ์์ ์ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ Cloud SQL ์ธ์คํด์ค์ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์ ์ธ์ฆ์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋๋ก ์ฌ๋ฐ๋ฅด๊ฒ ์
๋ฐ์ดํธ๋์ง ์์ผ๋ฉด SSL/TLS๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ์๋ ์ด์ ์ธ์ฆ์ ๊ตฌ์ฑ์ผ๋ก ๋กค๋ฐฑํ๋ฉด ๋ฉ๋๋ค.
๋กค๋ฐฑ ์์
์ ํ์ฑ ์ธ์ฆ์๋ฅผ '์์ ' ์ฌ๋กฏ์ผ๋ก ์ด๋ํฉ๋๋ค. ํ์ฑ ์ธ์ฆ์๋ ๋ชจ๋ '์์ ' ์ธ์ฆ์๋ฅผ ๋์ฒดํฉ๋๋ค. '์ด์ ' ์ธ์ฆ์๊ฐ ํ์ฑ ์ธ์ฆ์๊ฐ ๋๊ณ ์ธ์ฆ์ ๊ตฌ์ฑ์ด ์ํ์ด ์๋ฃ๋๊ธฐ ์ด์ ์ํ๋ก ๋์๊ฐ๋๋ค.
์ฝ์
-
Google Cloud ์ฝ์์์ Cloud SQL ์ธ์คํด์ค ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
Cloud SQL ์ธ์คํด์ค๋ก ์ด๋
-
์ธ์คํด์ค์ ๊ฐ์ ํ์ด์ง๋ฅผ ์ด๋ ค๋ฉด ์ธ์คํด์ค ์ด๋ฆ์ ํด๋ฆญํฉ๋๋ค.
- SQL ํ์ ๋ฉ๋ด์์ ์ฐ๊ฒฐ์ ์ ํํฉ๋๋ค.
- ๋ณด์ ํญ์ ์ ํํฉ๋๋ค.
- ์ธ์ฆ์ ๊ด๋ฆฌ๋ฅผ ํด๋ฆญํ์ฌ ํผ์นฉ๋๋ค.
- ์๋ฒ ์ธ์ฆ์ ๋กค๋ฐฑ์ ์ ํํฉ๋๋ค.
์ ๊ฒฉํ ์ธ์ฆ์๊ฐ ์์ผ๋ฉด ๋กค๋ฐฑ ์ต์
์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ธ์ฆ์ ๋กค๋ฐฑ ํ์ธ ๋ํ์์์์ ๋กค๋ฐฑ์ ์ ํํฉ๋๋ค.
๋กค๋ฐฑ์ ์๋ฃํ๋ ๋ฐ ๋ช ์ด ์ ๋ ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
gcloud
gcloud sql ssl server-certs rollback \
--instance=INSTANCE_NAME
REST v1
์๋ฒ ์ธ์ฆ์๋ฅผ ๋์ดํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_ID: ํ๋ก์ ํธ ID
- INSTANCE_ID: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/listServerCertificates
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/listServerCertificates"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/listServerCertificates" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"caCerts": [
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_CA_CERT_ONE",
"cert": "CERT_VALUE",
"commonName": "CA_SERVER_NAME",
"sha1Fingerprint": "sha1Fingerprint_CA_CERT_ONE",
"instance": "INSTANCE_NAME",
"createTime": "2024-07-10T17:18:54.935Z",
"expirationTime": "2034-07-10T17:19:54.935Z"
},
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_CA_CERT_TWO",
"cert": "CERT_VALUE",
"commonName": "CA_SERVER_NAME",
"sha1Fingerprint": "sha1Fingerprint_CA_CERT_TWO",
"instance": "INSTANCE_NAME",
"createTime": "2024-07-14T22:43:56.458Z",
"expirationTime": "2034-11-11T22:44:56.458Z"
}
],
"serverCerts": [
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_SERVER_CERT_ONE",
"cert": "CERT_VALUE"
"commonName": "SUBJECT_VALUE",
"sha1Fingerprint": "sha1Fingerprint_SERVER_CERT_ONE",
"instance": "INSTANCE_NAME",
"createTime": "2024-09-16T18:11:39Z",
"expirationTime": "2025-09-16T18:11:38Z"
},
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_SERVER_CERT_TWO",
"cert": "CERT_VALUE"
"commonName": "SUBJECT_VALUE",
"sha1Fingerprint": "sha1Fingerprint_SERVER_CERT_TWO",
"instance": "INSTANCE_NAME",
"createTime": "2024-09-10T20:56:06Z",
"expirationTime": "2025-09-10T20:56:05Z"
}
],
"activeVersion": "sha1Fingerprint_SERVER_CERT_TWO",
"kind": "sql#instancesListServerCertificates"
}
๋กค๋ฐฑํ๋ ค๋ ๋ฒ์ ์ sha1Fingerprint
ํ๋๋ฅผ ๋ณต์ฌํฉ๋๋ค.
activeVersion
์ผ๋ก ํ์๋๋ sha1Fingerprint
๊ฐ์ด ํฌํจ๋ ๋ฒ์ ์ ๋ฐ๋ก ์ด์ ๋ฒ์ (createTime
๊ฐ ํฌํจ)์ ์ฐพ์ต๋๋ค.
์ํ์ ๋กค๋ฐฑํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_ID: ํ๋ก์ ํธ ID
- INSTANCE_ID: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/rotateServerCertificate
JSON ์์ฒญ ๋ณธ๋ฌธ:
{
"rotateServerCertificateContext": {"nextVersion": "sha1Fingerprint"}
}
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/rotateServerCertificate"
PowerShell(Windows)
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/rotateServerCertificate" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
์๋ฒ ์ธ์ฆ์๋ฅผ ๋์ดํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_ID: ํ๋ก์ ํธ ID
- INSTANCE_ID: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/listServerCertificates
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/listServerCertificates"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/listServerCertificates" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"caCerts": [
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_CA_CERT_ONE",
"cert": "CERT_VALUE",
"commonName": "CA_SERVER_NAME",
"sha1Fingerprint": "sha1Fingerprint_CA_CERT_ONE",
"instance": "INSTANCE_NAME",
"createTime": "2024-07-10T17:18:54.935Z",
"expirationTime": "2034-07-10T17:19:54.935Z"
},
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_CA_CERT_TWO",
"cert": "CERT_VALUE",
"commonName": "CA_SERVER_NAME",
"sha1Fingerprint": "sha1Fingerprint_CA_CERT_TWO",
"instance": "INSTANCE_NAME",
"createTime": "2024-07-14T22:43:56.458Z",
"expirationTime": "2034-11-11T22:44:56.458Z"
}
],
"serverCerts": [
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_SERVER_CERT_ONE",
"cert": "CERT_VALUE"
"commonName": "SUBJECT_VALUE",
"sha1Fingerprint": "sha1Fingerprint_SERVER_CERT_ONE",
"instance": "INSTANCE_NAME",
"createTime": "2024-09-16T18:11:39Z",
"expirationTime": "2025-09-16T18:11:38Z"
},
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_SERVER_CERT_TWO",
"cert": "CERT_VALUE"
"commonName": "SUBJECT_VALUE",
"sha1Fingerprint": "sha1Fingerprint_SERVER_CERT_TWO",
"instance": "INSTANCE_NAME",
"createTime": "2024-09-10T20:56:06Z",
"expirationTime": "2025-09-10T20:56:05Z"
}
],
"activeVersion": "sha1Fingerprint_SERVER_CERT_TWO",
"kind": "sql#instancesListServerCertificates"
}
๋กค๋ฐฑํ๋ ค๋ ๋ฒ์ ์ sha1Fingerprint
ํ๋๋ฅผ ๋ณต์ฌํฉ๋๋ค.
activeVersion
์ผ๋ก ํ์๋๋ sha1Fingerprint
๊ฐ์ด ํฌํจ๋ ๋ฒ์ ์ ๋ฐ๋ก ์ด์ ๋ฒ์ (createTime
๊ฐ ํฌํจ)์ ์ฐพ์ต๋๋ค.
์ํ์ ๋กค๋ฐฑํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_ID: ํ๋ก์ ํธ ID
- INSTANCE_ID: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/rotateServerCertificate
JSON ์์ฒญ ๋ณธ๋ฌธ:
{
"rotateServerCertificateContext": {"nextVersion": "sha1Fingerprint"}
}
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/rotateServerCertificate"
PowerShell(Windows)
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/rotateServerCertificate" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
CA ์ธ์ฆ์ ์ฝํ
์ธ ๋ณด๊ธฐ
openssl storeutl
์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ CA ์ธ์ฆ์ ์ฝํ
์ธ ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
sql ssl server-certs list ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด ์ ๋ขฐ ์ฒด์ธ์ผ๋ก ์ธํด ํญ์ CA ์ธ์ฆ์ ์ฌ๋ฌ ๊ฐ๊ฐ ๋ฐํ๋ฉ๋๋ค.
์ด์ ์ํ ๊ด๋ จ ์์
์์ CA ์ธ์ฆ์ ์ฌ๋ฌ ๊ฐ๊ฐ ๋ฐํ๋ ์๋ ์์ต๋๋ค.
gcloud
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud sql ssl server-certs list \
--instance=INSTANCE_NAME \
--format='value(cert)' > temp_cert.pem
INSTANCE_NAME์ ์ธ์คํด์ค ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
openssl
์ ์ฌ์ฉํ์ฌ CA ์ธ์ฆ์ ์ฝํ
์ธ ๋ฅผ ๊ฒ์ฌํฉ๋๋ค.
openssl storeutl -noout -text temp_cert.pem
์๋ฒ ์ธ์ฆ์ ์ฝํ
์ธ ๋ณด๊ธฐ
openssl
์ ํธ๋ฆฌํฐ์ sql ssl server-certs list ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ ์ธ์ฆ์ ์ฝํ
์ธ ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
gcloud CLI ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด ์ ๋ขฐ ์ฒด์ธ์ผ๋ก ์ธํด ํญ์ CA ์ธ์ฆ์ ์ฌ๋ฌ ๊ฐ๊ฐ ๋ฐํ๋ฉ๋๋ค. ์ด์ ์ํ ๊ด๋ จ ์์
์์ CA ์ธ์ฆ์ ์ฌ๋ฌ ๊ฐ๊ฐ ๋ฐํ๋ ์๋ ์์ต๋๋ค.
gcloud
openssl s_client
๋ง ์ฌ์ฉ:
openssl s_client -starttls postgres -connect INSTANCE_IP_ADDRESS:5432
INSTANCE_IP_ADDRESS๋ฅผ ์ธ์คํด์ค IP ์ฃผ์๋ก ๋ฐ๊ฟ๋๋ค.
gcloud CLI
๋ฐ openssl storeutl
์ฌ์ฉ:
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud sql ssl server-certs list \
--instance=INSTANCE_NAME \
--format='value(ssl_cert.cert)' > temp_cert.pem
INSTANCE_NAME์ ์ธ์คํด์ค ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
openssl
์ ์ฌ์ฉํ์ฌ ์๋ฒ ์ธ์ฆ์ ์ฝํ
์ธ ๋ฅผ ๊ฒ์ฌํฉ๋๋ค.
openssl storeutl -noout -text temp_cert.pem
๊ณต์ CA์ ๋ฃจํธ ๋ฐ ๋ฆฌ์ CA ์ธ์ฆ์ ๋ฒ๋ค ๋ค์ด๋ก๋
Google ๊ด๋ฆฌ ๊ณต์ CA ๊ตฌ์ฑ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค์ ํ์์ ๋ฃจํธ ๋ฐ ๋ฆฌ์ CA ์ธ์ฆ์ ๋ฒ๋ค์ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค.
์ธ์คํด์ค๋ณ ๋๋ ๊ณ ๊ฐ ๊ด๋ฆฌ CA ์ต์
์ ์ฌ์ฉํ๋ ์ธ์คํด์ค์๋ ์ด๋ฌํ ์ธ์ฆ์ ๋ฒ๋ค์ด ์ ์ฉ๋์ง ์์ต๋๋ค.
SSL/TLS ๊ตฌ์ฑ ์ฌ์ค์
SSL/TLS ๊ตฌ์ฑ์ ์์ ํ ์ฌ์ค์ ํ ์ ์์ต๋๋ค.
Console
-
Google Cloud ์ฝ์์์ Cloud SQL ์ธ์คํด์ค ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
Cloud SQL ์ธ์คํด์ค๋ก ์ด๋
-
์ธ์คํด์ค์ ๊ฐ์ ํ์ด์ง๋ฅผ ์ด๋ ค๋ฉด ์ธ์คํด์ค ์ด๋ฆ์ ํด๋ฆญํฉ๋๋ค.
- SQL ํ์ ๋ฉ๋ด์์ ์ฐ๊ฒฐ์ ์ ํํฉ๋๋ค.
- SSL ๊ตฌ์ฑ ์ฌ์ค์ ์น์
์ผ๋ก ์ด๋ํฉ๋๋ค.
- SSL ๊ตฌ์ฑ ์ฌ์ค์ ์ ํด๋ฆญํฉ๋๋ค.
REST v1beta4
์ธ์ฆ์๋ฅผ ์๋ก ๊ณ ์นฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/resetSslConfig
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
cURL(Linux, macOS, Cloud Shell)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/resetSslConfig"
PowerShell(Windows)
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/resetSslConfig" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์๋ต
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
- ์ ํด๋ผ์ด์ธํธ ์ธ์ฆ์๋ฅผ ๋ง๋ญ๋๋ค.
๋ค์ ๋จ๊ณ