이 페이지에서는 투명 데이터 암호화(TDE)를 사용하는 방법을 보여줍니다.
다음 섹션에서는 TDE 인증서 사용 방법을 보여줍니다.
시작하기 전에
TDE 인증서를 가져오거나 내보내려면 cloudsql.admin
역할에서 제공되는 cloudsql.instances.manageEncryption
Identity and Access Management 권한이 있어야 합니다. 자세한 내용은 Cloud SQL 역할을 참조하세요.
GRANT VIEW ANY DEFINITION TO other_login AS CustomerDbRootRole
외부 TDE 인증서 가져오기
콘솔
Google Cloud 콘솔을 사용하여 TDE 인증서를 가져올 수 없습니다.
gcloud
다음 gcloud sql import
를 사용하여 Cloud Storage 버킷에서 인증서를 가져옵니다.
gcloud sql import tde INSTANCE_NAME \ --certificate CERTIFICATE_NAME \ --cert-path=gs://BUCKET_NAME/CERTIFICATE_NAME \ --pvk-path=gs://BUCKET_NAME/KEY_NAME \ --prompt-for-pvk-password \ --pvk-password CERTIFICATE_PASSWORD
다음을 바꿉니다.
- INSTANCE_NAME: TDE 인증서를 가져오려는 Cloud SQL 인스턴스의 이름입니다.
- CERTIFICATE_NAME: 가져오려는 암호화 인증서의 이름입니다.
- BUCKET_NAME: 가져오려는 TDE 인증서가 있는 Cloud Storage 버킷의 이름입니다.
- KEY_NAME: Cloud Storage 버킷과 연결된 암호화 키의 이름입니다.
- CERTIFICATE_PASSWORD: 인증서 비밀번호입니다.
REST v1
TDE 인증서를 가져오려면 instances.import
메서드를 사용하고 다음 속성을 지정합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 암호화 인증서를 가져오려는 프로젝트의 이름입니다.
- INSTANCE_NAME: 암호화 인증서를 가져오려는 Cloud SQL 인스턴스의 이름입니다.
- TDE_CERTIFICATE_NAME: 가져온 후 사용하려는 암호화 인증서의 이름입니다.
- CERTIFICATE_NAME: 가져오려는 암호화 인증서의 이름입니다.
- BUCKET_NAME: 가져오려는 암호화 인증서가 있는 Cloud Storage 버킷의 이름입니다.
- KEY_NAME: Cloud Storage 버킷과 연결된 암호화 키의 이름입니다.
- CERTIFICATE_PASSWORD: 인증서 비밀번호입니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
JSON 요청 본문:
{ "importContext": { "fileType": "TDE", "tdeImportOptions": { "name": "TDE_CERTIFICATE_NAME", "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME", "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME", "privateKeyPassword": "CERTIFICATE_PASSWORD" } } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
REST v1beta4
TDE 인증서를 가져오려면 instances.import
메서드를 사용하고 다음 속성을 지정합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 암호화 인증서를 가져오려는 프로젝트의 이름입니다.
- INSTANCE_NAME: 암호화 인증서를 가져오려는 Cloud SQL 인스턴스의 이름입니다.
- TDE_CERTIFICATE_NAME: 가져온 후 사용하려는 암호화 인증서의 이름입니다.
- CERTIFICATE_NAME: 가져오려는 암호화 인증서의 이름입니다.
- BUCKET_NAME: 가져오려는 암호화 인증서가 있는 Cloud Storage 버킷의 이름입니다.
- KEY_NAME: Cloud Storage 버킷과 연결된 암호화 키의 이름입니다.
- CERTIFICATE_PASSWORD: 인증서 비밀번호입니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
JSON 요청 본문:
{ "importContext": { "fileType": "TDE", "tdeImportOptions": { "name": "TDE_CERTIFICATE_NAME", "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME", "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME", "privateKeyPassword": "CERTIFICATE_PASSWORD" } } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
가져온 각 TDE 인증서에는 다음 형식의 고유한 이름이 할당됩니다.
gcloud_tde_user_CERTIFICATE_NAME_GENERATED_GUID
인스턴스에 PITR(point-in-time recovery)이 사용 설정되었으면 가져온 TDE 인증서를 사용할 수 있을 때까지 몇 분 정도 걸릴 수 있습니다.
TDE 인증서 순환
msdb.dbo.gcloudsql_rotate_tde_certificate
저장 프러시저를 사용하여 가져온 TDE 인증서를 순환할 수 있습니다. 이 프로시저는sqlserver
사용자 또는sqlserver
사용자가 권한을 부여한 대상 사용자가 다음과 비슷한 호출을 사용하여 호출할 수 있습니다.EXEC msdb.dbo.gcloudsql_rotate_tde_certificate TDE_CERTIFICATE_NAME
TDE 인증서 삭제
사용자 TDE 인증서는 최대 10개까지 가져올 수 있습니다. 더 가져와야 하는 경우에는
msdb.dbo.gcloudsql_drop_tde_user_certificate
저장 프로시저를 사용하여 불필요한 TDE 인증서를 삭제합니다. 이 프로시저는sqlserver
사용자 또는sqlserver
사용자가 권한을 부여한 대상 사용자가 다음과 비슷한 호출을 사용하여 호출할 수 있습니다.EXEC gcloudsql_drop_tde_user_certificate TDE_CERTIFICATE_NAME
Cloud SQL에서 관리하는 인증서는 삭제할 수 없습니다.
사용 중인 인증서는 삭제할 수 없습니다.
TDE 인증서 내보내기
프리픽스와 서픽스를 포함하여 내보내려는 전체 TDE 인증서 이름을 지정해야 합니다. sys.certificates
보기에서 이름 열을 쿼리하여 전체 TDE 암호화 인증서 이름을 조회할 수 있습니다.
SELECT name FROM sys.certificates
콘솔
Google Cloud 콘솔을 사용하여 TDE 인증서를 내보낼 수 없습니다.
gcloud
다음 gcloud sql export
를 사용하여 TDE 인증서를 Cloud Storage 버킷으로 내보냅니다.
gcloud sql export tde INSTANCE_NAME \ --certificate CERTIFICATE_NAME \ --cert-path=gs://BUCKET_NAME/CERTIFICATE_NAME \ --pvk-path=gs://BUCKET_NAME/KEY_NAME \ --prompt-for-pvk-password \ --pvk-password CERTIFICATE_PASSWORD
다음을 바꿉니다.
- INSTANCE_NAME: TDE 인증서를 내보내려는 Cloud SQL 인스턴스의 이름입니다.
- CERTIFICATE_NAME: 내보내려는 암호화 인증서의 이름입니다.
- BUCKET_NAME: 내보내려는 TDE 인증서가 있는 Cloud Storage 버킷의 이름입니다.
- KEY_NAME: Cloud Storage 버킷과 연결된 암호화 키의 이름입니다.
- CERTIFICATE_PASSWORD: 인증서 비밀번호입니다.
REST v1
TDE 인증서를 내보내려면 instances.export
메서드를 사용하고 다음 속성을 지정합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 암호화 인증서를 내보내려는 프로젝트의 이름입니다.
- INSTANCE_NAME: 암호화 인증서를 내보내려는 Cloud SQL 인스턴스의 이름입니다.
- TDE_CERTIFICATE_NAME: 내보낸 후 사용하려는 암호화 인증서의 이름입니다.
- CERTIFICATE_NAME: 내보내려는 암호화 인증서의 이름입니다.
- BUCKET_NAME: 내보내려는 암호화 인증서가 있는 Cloud Storage 버킷의 이름입니다.
- KEY_NAME: Cloud Storage 버킷과 연결된 암호화 키의 이름입니다.
- CERTIFICATE_PASSWORD: 인증서 비밀번호입니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
JSON 요청 본문:
{ "exportContext": { "fileType": "TDE", "tdeExportOptions": { "name": "TDE_CERTIFICATE_NAME", "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME", "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME", "privateKeyPassword": "CERTIFICATE_PASSWORD" } } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
REST v1beta4
TDE 인증서를 내보내려면 instances.export
메서드를 사용하고 다음 속성을 지정합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 암호화 인증서를 내보내려는 프로젝트의 이름입니다.
- INSTANCE_NAME: 암호화 인증서를 내보내려는 Cloud SQL 인스턴스의 이름입니다.
- TDE_CERTIFICATE_NAME: 내보낸 후 사용하려는 암호화 인증서의 이름입니다.
- CERTIFICATE_NAME: 내보내려는 암호화 인증서의 이름입니다.
- BUCKET_NAME: 내보내려는 암호화 인증서가 있는 Cloud Storage 버킷의 이름입니다.
- KEY_NAME: Cloud Storage 버킷과 연결된 암호화 키의 이름입니다.
- CERTIFICATE_PASSWORD: 인증서 비밀번호입니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
JSON 요청 본문:
{ "exportContext": { "fileType": "TDE", "tdeExportOptions": { "name": "TDE_CERTIFICATE_NAME", "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME", "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME", "privateKeyPassword": "CERTIFICATE_PASSWORD" } } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
TDE 암호화 백업 가져오기
TDE 암호화 백업을 가져올 때 일치하는 TDE 인증서가 이미 소스 인스턴스에 있으면 암호화된 백업을 직접 가져올 수 있으며, 복호화되지 않습니다. 인증서를 다시 제공할 필요가 없습니다.
인증서가 인스턴스에 없으면 가져올 때 --keep-encrypted
플래그를 사용합니다. 이 플래그는 다음과 같은 이점을 제공합니다.
- TDE 인증서를 인스턴스와 연결된 상태로 유지합니다.
- 가져오기 중에 백업이 복호화되지 않도록 합니다.
--keep-encrypted
플래그를 사용하지 않으면 가져온 백업이 복호화되고 TDE 인증서가 서버에 저장되지 않습니다.
자세한 내용은 다음 리소스를 참조하세요.
TDE 암호화 백업 내보내기
TDE 암호화 백업은 암호화되지 않은 백업을 내보내는 것과 동일한 방법으로 내보낼 수 있습니다. 백업을 암호화하는 데 사용되는 인증서는 내보내기에 포함되지 않습니다. 별도로 내보내야 합니다.
자세한 내용은 다음 리소스를 참조하세요.
데이터베이스 암호화 및 복호화
SQL Server를 사용하는 것과 거의 동일한 방법으로 인스턴스를 암호화하고 복호화할 수 있습니다.
처음에는 sqlserver
와 같은 사용자 root
로그인만 TDE 인증서에 액세스할 수 있습니다.
다른 사용자에게 액세스 권한을 부여하려면 다음 명령어 또는 유사한 명령어를 사용합니다.
GRANT VIEW ANY DEFINITION TO CERTIFICATE_NAME AS CustomerDbRootRole
또는 특정 인증서 및 데이터베이스 사용자에게 액세스 권한을 부여할 수 있습니다.
다음 명령어 또는 유사한 명령어를 사용하여 데이터베이스를 암호화할 수 있습니다.
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE CERTIFICATE_NAME ALTER DATABASE DATABASE_NAME SET ENCRYPTION ON
다음 명령어 또는 유사한 명령어를 사용하여 데이터베이스를 복호화할 수 있습니다.
ALTER DATABASE DATABASE_NAME SET ENCRYPTION OFF