TLS 암호화 스위트 제한
이 페이지에서는 보안 수준이 낮은 특정 전송 계층 보안 (TLS) 암호화 스위트를 사용하여 이루어진 요청을 거부하여 리소스에 대한 액세스를 방지하는 방법을 설명합니다. Google Cloud
개요
Google Cloud 는 여러 TLS 암호화 스위트를 지원합니다. 보안 또는 규정 준수 요구사항을 충족하기 위해 보안 수준이 낮은 TLS 암호화 스위트를 사용하는 클라이언트의 요청을 거부해야 할 수 있습니다.
이 기능은 gcp.restrictTLSCipherSuites
조직 정책 제약조건에서 제공합니다.
이 제약조건은 리소스 계층 구조의 조직, 폴더 또는 프로젝트에 적용할 수 있습니다.
gcp.restrictTLSCipherSuites
제약조건을 허용 목록 또는 거부 목록으로 사용할 수 있습니다.
조직 정책 계층 구조 평가의 동작으로 인해 TLS 암호화 스위트 제한 제약 조건은 지정된 리소스 노드와 모든 하위 요소에 적용됩니다. 예를 들어 조직에 특정 TLS 암호화 스위트만 허용하는 경우 해당 조직에서 파생된 모든 폴더 및 프로젝트 (하위)에도 적용됩니다.
시작하기 전에
조직 정책을 설정, 변경, 삭제하는 데 필요한 권한을 얻으려면 관리자에게 조직에 대한 조직 정책 관리자 (roles/orgpolicy.policyAdmin
) IAM 역할을 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
조직 정책 설정
TLS 암호화 스위트 제한 제약조건은 목록 제약조건의 한 유형입니다. TLS 암호화 스위트 제한 제약조건의 allowed_values
또는 denied_values
목록에서 암호화 스위트를 추가하거나 삭제할 수 있습니다. 조직 정책이 너무 제한적이지 않도록 하고 정책 관리를 간소화하려면 값 그룹을 사용하세요. 값 그룹은 Google에서 선별한 권장 TLS 암호 모음입니다.
콘솔
Google Cloud 콘솔에서 조직 정책 페이지를 엽니다.
페이지 상단의 프로젝트 선택 도구를 선택합니다.
프로젝트 선택 도구에서 조직 정책을 설정할 리소스를 선택합니다.
조직 정책 페이지의 목록에서 TLS 암호화 스위트 제한 제약조건을 선택합니다.
이 리소스의 조직 정책을 업데이트하려면 정책 관리를 클릭합니다.
수정 페이지에서 맞춤설정을 선택합니다.
정책 시행에서 시행 옵션을 선택합니다.
조직 정책을 병합하고 평가하려면 상위 요소와 병합을 선택합니다. 상속과 리소스 계층 구조에 대한 자세한 내용은 계층 구조 평가 이해를 참고하세요.
상위 리소스에서 상속된 정책을 재정의하려면 바꾸기를 선택합니다.
규칙 추가를 클릭합니다.
정책 값에서 커스텀을 선택합니다.
정책 유형에서 허용을 선택하여 허용된 암호 모음 목록을 만들거나 거부를 선택하여 거부된 암호 모음 목록을 만듭니다.
커스텀 값에
in:
접두사와 값 그룹 문자열을 입력한 후 Enter 키를 누릅니다.예를 들면
in:NIST-800-52-recommended-ciphers
입니다. 값 추가를 클릭하여 여러 개의 값 그룹 문자열을 입력할 수 있습니다.is:
접두사를 사용하여 특정 암호 모음 문자열을 입력할 수도 있습니다. 지원되는 값 목록은 지원되는 암호화 스위트를 참고하세요.
정책을 시행하려면 정책 설정을 클릭합니다.
gcloud
TLS 암호 모음 제한 제약조건을 시행하는 조직 정책을 만들려면 제약조건을 참조하는 정책 YAML 파일을 만듭니다.
constraint: constraints/gcp.restrictTLSCipherSuites
listPolicy:
allowedValues:
- in:CNSA-2.0-recommended-ciphers
- is:TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
제약조건이 포함된 조직 정책을 시행하려면 다음 명령어를 실행합니다.
gcloud resource-manager org-policies set-policy \ --RESOURCE_TYPE RESOURCE_ID \ POLICY_PATH
다음을 바꿉니다.
RESOURCE_TYPE
:organization
,folder
또는project
RESOURCE_ID
: 조직 ID, 폴더 ID, 프로젝트 ID 또는 프로젝트 번호POLICY_PATH
를 조직 정책이 포함된 YAML 파일의 전체 경로로 바꿉니다.
새 조직 정책의 결과와 함께 응답이 반환됩니다.
constraint: constraints/gcp.restrictTLSCipherSuites etag: COS9qr0GELii6o0C listPolicy: allowedValues: - in:CNSA-2.0-recommended-ciphers - is:TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA updateTime: '2025-02-11T00:50:44.565875Z'
값 그룹
값 그룹은 선호하거나 권장하는 TLS 암호화 스위트를 더 간단하게 정의할 수 있도록 Google에서 선별한 암호화 스위트 모음입니다. 값 그룹에는 여러 암호화 스위트가 포함되며 시간이 지남에 따라 Google에서 확장됩니다. 새 암호 모음을 수용하기 위해 조직 정책을 변경할 필요는 없습니다.
조직 정책에 값 그룹을 사용하려면 in:
문자열을 항목의 프리픽스로 지정하세요. 값 프리픽스 사용에 대한 자세한 내용은 제약조건 사용을 참조하세요.
값 그룹 이름은 조직 정책을 설정하기 위한 호출에서 검증됩니다.
잘못된 그룹 이름을 사용하면 정책 설정이 실패합니다.
다음 표에는 현재 사용 가능한 그룹 목록이 나와 있습니다.
그룹 | 세부정보 | 직접 멤버 |
---|---|---|
CNSA-2.0-recommended-ciphers | Google Cloud에서 지원하는 CNSA 2.0 권장 암호화 알고리즘:in:CNSA-2.0-recommended-ciphers |
값:
|
NIST-800-52-recommended-ciphers | Google Cloud에서 지원하는 NIST SP 800-52 권장 암호화 알고리즘:in:NIST-800-52-recommended-ciphers |
값:
|
지원되는 암호화 스위트
에 대한 모든 액세스 경로가 효과적으로 차단되므로 주의하세요.다음은 Google Cloud에서 지원하는 암호화 스위트 목록입니다.
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_AES_128_GCM_SHA256
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256
오류 메시지
TLS 암호화 스위트 제한 제약조건을 지원하는 서비스는 제약조건을 위반하는 요청을 거부합니다.
오류 메시지 예시
오류 메시지의 형식은 다음 예와 비슷합니다.
Request is disallowed by organization's constraints/gcp.restrictTLSCipherSuites constraint for 'projects/PROJECT_NUMBER'. Access to service 'SERVICE_NAME.googleapis.com' attempted with a disallowed TLS Cipher Suite: 'TLS_Cipher_Suite_X` To access this resource, please use an allowed TLS Cipher Suite.
이 출력에는 다음 값이 포함됩니다.
PROJECT_NUMBER
: 이전 명령어에서 참조된 리소스를 호스팅하는 프로젝트 번호입니다.SERVICE_NAME
: TLS 암호화 스위트 제한 정책에 의해 차단된 범위 내 서비스의 이름입니다.TLS_Cipher_Suite_X
: 요청에 사용된 TLS 암호화 스위트입니다.
Cloud 감사 로그 예시
추가 모니터링, 알림 또는 디버깅을 위해 감사 로그 항목도 생성됩니다. 감사 로그 항목은 다음 예와 유사합니다.
{ logName: "projects/my-project-number/logs/cloudaudit.googleapis.com%2Fpolicy" protoPayload: { @type: "type.googleapis.com/google.cloud.audit.AuditLog" status: { code: 7 message: "Request is disallowed by organization's TLS Cipher Suite Restriction Org Policy for 'projects/my-project-number'. Attempting to use service 'bigquery.googleapis.com' with a disallowed TLS Cipher Suite: 'TLS_Cipher_Suite_X`." } serviceName: "bigquery.googleapis.com" methodName: "google.cloud.bigquery.v2.TableDataService.InsertAll" resourceName: "projects/my-project-number" authenticationInfo: { principalEmail: "user_or_service_account@example.com" } } requestMetadata: { callerIp: "123.123.123.123" } policyViolationInfo: { orgPolicyViolationInfo: { violationInfo: [ { constraint: "constraints/gcp.restrictTlsCipherSuites" errorMessage: "TLS Cipher Suite Restriction Org Policy is violated" policyType: "LIST_CONSTRAINT" } ] } } resource: { type: "audited_resource" labels: { project_id: "my-project-number" method: "google.cloud.bigquery.v2.TableDataService.InsertAll" service: "bigquery.googleapis.com" } } severity: "ERROR" timestamp: "2023-10-27T19:27:24.633477924Z" receiveTimestamp: "2023-10-27T19:27:25.071941737Z" insertId "42" }
정책 테스트
모든 범위 내 서비스에서 TLS 암호 제한 정책 제약조건을 테스트할 수 있습니다. 다음 curl
명령어 예시는 Cloud Key Management Service 키링의 TLS 암호화 스위트 제한을 검증합니다.
curl --ciphers TLS_CIPHER_SUITE --tls_max 1.2 -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/global/keyRings" --verbose
다음 변수를 바꿉니다.
TLS_CIPHER_SUITE
: OpenSSL 이름 지정 규칙의 TLS 암호화 모음 이름입니다. 예를 들어TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
의 OpenSSL 이름인ECDHE-ECDSA-AES128-SHA
이 있습니다.PROJECT_ID
: 키링이 포함된 프로젝트의 이름
다음 curl
요청 예시에서는 PROJECT_ID이 my-project-id
으로 설정되고 TLS_CIPHER_SUITE이 ECDHE-ECDSA-AES128-SHA
로 설정된 것을 보여줍니다.
curl --ciphers ECDHE-ECDSA-AES128-SHA --tls-max 1.2 \ GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://cloudkms.googleapis.com/v1/projects/my-project-id/locations/global/keyRings" --verbose
'my-project-id'의 조직 정책이 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
를 거부하도록 구성된 경우 이 예시 명령어의 정책 제한 프로젝트에서 암호화 알고리즘으로 리소스에 액세스하려고 시도하면 실패합니다.
다음 예와 유사한 오류 메시지가 반환되며 이 실패의 원인을 설명합니다.
Request is disallowed by organization's constraints/gcp.restrictTLSCipherSuites constraint for 'projects/my-project-id'. Access to service cloudkms.googleapis.com attempted with a disallowed TLS Cipher Suite: `TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA`. To access this resource, please use an allowed TLS Cipher Suite.
테스트 실행 모드의 조직 정책 만들기
테스트 실행 모드의 조직 정책은 정책 위반이 감사 로그로 작성되지만 위반 작업이 거부되지 않는 조직 정책 유형입니다. TLS 암호 모음 제한 제약조건을 사용하여 테스트 실행 모드의 조직 정책을 만들어 활성 정책을 적용하기 전에 제약조건이 조직에 미치는 영향을 모니터링할 수 있습니다. 자세한 내용은 테스트 실행 모드의 조직 정책 만들기를 참조하세요.
지원되는 서비스
다음 서비스는 TLS 암호화 스위트 제한을 지원합니다. 이 제약 조건은 전역, 위치, 리전 엔드포인트를 비롯한 API 엔드포인트의 모든 변형에 적용됩니다. 자세한 내용은 API 엔드포인트 유형 페이지를 참고하세요.
제품 | API 엔드포인트 |
---|---|
API 게이트웨이 |
apigateway.googleapis.com |
API 키 |
apikeys.googleapis.com |
Access Context Manager |
accesscontextmanager.googleapis.com |
Apigee |
apigee.googleapis.com |
Apigee API 허브 |
apihub.googleapis.com |
Apigee API 관리 API |
apim.googleapis.com |
Apigee Connect API |
apigeeconnect.googleapis.com |
Apigee Portal API |
apigeeportal.googleapis.com |
Apigee Registry API |
apigeeregistry.googleapis.com |
App Config Manager API |
appconfigmanager.googleapis.com |
App Design Center |
designcenter.googleapis.com |
Application Integration |
integrations.googleapis.com |
Artifact Analysis |
containeranalysis.googleapis.com ondemandscanning.googleapis.com |
Artifact Registry |
artifactregistry.googleapis.com |
Assured Open Source Software |
assuredoss.googleapis.com |
Assured Workloads |
assuredworkloads.googleapis.com |
감사 관리자 |
auditmanager.googleapis.com |
Authorization Toolkit API |
authztoolkit.googleapis.com |
일괄 |
batch.googleapis.com |
Chrome Enterprise Premium |
beyondcorp.googleapis.com |
BigLake |
biglake.googleapis.com |
BigQuery |
bigquery.googleapis.com |
BigQuery 연결 |
bigqueryconnection.googleapis.com |
BigQuery 데이터 정책 |
bigquerydatapolicy.googleapis.com |
BigQuery 데이터 전송 |
bigquerydatatransfer.googleapis.com |
BigQuery 마이그레이션 |
bigquerymigration.googleapis.com |
BigQuery 예약 |
bigqueryreservation.googleapis.com |
BigQuery Saved Query API |
bigquery-sq.googleapis.com |
BigQuery 스토리지 |
bigquerystorage.googleapis.com |
Bigtable |
bigtable.googleapis.com bigtableadmin.googleapis.com |
Binary Authorization |
binaryauthorization.googleapis.com |
블록체인 애널리틱스 |
blockchain.googleapis.com |
블록체인 노드 엔진 |
blockchainnodeengine.googleapis.com |
블록체인 검사기 관리자 |
blockchainvalidatormanager.googleapis.com |
용량 플래너 |
capacityplanner.googleapis.com |
Certificate Authority Service |
privateca.googleapis.com |
인증서 관리자 |
certificatemanager.googleapis.com |
Cloud 애셋 인벤토리 |
cloudasset.googleapis.com |
Cloud Build |
cloudbuild.googleapis.com |
Cloud CDN |
compute.googleapis.com |
Cloud Commerce Producer API |
cloudcommerceproducer.googleapis.com |
Cloud Composer |
composer.googleapis.com |
Cloud Controls Partner API |
cloudcontrolspartner.googleapis.com |
Cloud DNS |
dns.googleapis.com |
Cloud Data Fusion |
datafusion.googleapis.com |
Cloud Deployment Manager |
runtimeconfig.googleapis.com deploymentmanager.googleapis.com |
Cloud Domains |
domains.googleapis.com |
Cloud Healthcare API |
healthcare.googleapis.com |
Cloud Interconnect |
compute.googleapis.com |
Cloud Intrusion Detection System |
ids.googleapis.com |
Cloud Key Management Service |
cloudkms.googleapis.com |
Cloud Life Sciences |
lifesciences.googleapis.com |
Cloud Load Balancing |
compute.googleapis.com |
Cloud Logging |
logging.googleapis.com |
Cloud Monitoring |
monitoring.googleapis.com |
Cloud NAT |
compute.googleapis.com |
Cloud Natural Language API |
language.googleapis.com |
Cloud Next Generation Firewall Essentials |
compute.googleapis.com networksecurity.googleapis.com |
Cloud Next Generation Firewall Standard |
compute.googleapis.com networksecurity.googleapis.com |
Cloud OS Login API |
oslogin.googleapis.com |
Cloud Router |
compute.googleapis.com |
Cloud Run |
run.googleapis.com |
Cloud SQL |
sqladmin.googleapis.com |
Cloud Service Mesh |
meshconfig.googleapis.com networksecurity.googleapis.com |
Cloud Support API |
cloudsupport.googleapis.com |
Cloud Tool Results API |
toolresults.googleapis.com |
Cloud VPN |
compute.googleapis.com |
Cloud Workstations |
workstations.googleapis.com |
Commerce Agreement Publishing API |
commerceagreementpublishing.googleapis.com |
Commerce Business Enablement API |
commercebusinessenablement.googleapis.com |
Commerce Price Management API |
commercepricemanagement.googleapis.com |
Compute Engine |
compute.googleapis.com |
컨피덴셜 컴퓨팅 |
confidentialcomputing.googleapis.com |
연결 |
gkeconnect.googleapis.com |
Connect 게이트웨이 |
connectgateway.googleapis.com |
Contact Center AI Platform API |
contactcenteraiplatform.googleapis.com |
Container Threat Detection |
containerthreatdetection.googleapis.com |
Content Warehouse API |
contentwarehouse.googleapis.com |
Continuous Validation API |
continuousvalidation.googleapis.com |
Data Labeling API |
datalabeling.googleapis.com |
데이터 보안 상황 관리 API |
dspm.googleapis.com |
Database Migration Service |
datamigration.googleapis.com |
Dataflow |
dataflow.googleapis.com |
Dataproc on GDC |
dataprocgdc.googleapis.com |
Google Distributed Cloud |
opsconfigmonitoring.googleapis.com gdcvmmanager.googleapis.com gdchardwaremanagement.googleapis.com |
Distributed Cloud Edge Container API |
edgecontainer.googleapis.com |
Distributed Cloud Edge Network API |
edgenetwork.googleapis.com |
Enterprise Knowledge Graph |
enterpriseknowledgegraph.googleapis.com |
Error Reporting |
clouderrorreporting.googleapis.com |
필수 연락처 |
essentialcontacts.googleapis.com |
Eventarc |
eventarc.googleapis.com |
Filestore |
file.googleapis.com |
Financial Services API |
financialservices.googleapis.com |
Firebase App Hosting |
firebaseapphosting.googleapis.com |
Firebase Data Connect |
firebasedataconnect.googleapis.com |
Firebase 보안 규칙 |
firebaserules.googleapis.com |
GKE Dataplane Management |
gkedataplanemanagement.googleapis.com |
GKE Enterprise Edge API |
anthosedge.googleapis.com |
GKE Multi-Cloud |
gkemulticloud.googleapis.com |
GKE On-Prem API |
gkeonprem.googleapis.com |
Gemini for Google Cloud API |
cloudaicompanion.googleapis.com |
Google Cloud API |
cloud.googleapis.com |
Google Cloud Armor |
compute.googleapis.com |
Google Cloud Migration Center |
migrationcenter.googleapis.com |
Google Cloud Observability |
stackdriver.googleapis.com |
Google Kubernetes Engine |
container.googleapis.com configdelivery.googleapis.com |
Google Security Operations SIEM |
chronicle.googleapis.com chronicleservicemanager.googleapis.com |
Google Security Operations Partner API |
chroniclepartner.googleapis.com |
Google Workspace 부가기능 |
gsuiteaddons.googleapis.com |
Identity and Access Management |
iam.googleapis.com |
IAP(Identity-Aware Proxy) |
iap.googleapis.com |
Immersive Stream |
stream.googleapis.com |
Infrastructure Manager |
config.googleapis.com |
Integration Connectors |
connectors.googleapis.com |
KRM API Hosting |
krmapihosting.googleapis.com |
Live Stream API |
livestream.googleapis.com |
Apache Flink용 BigQuery 엔진을 |
managedflink.googleapis.com |
관리형 Kafka API |
managedkafka.googleapis.com |
Media Asset Manager |
mediaasset.googleapis.com |
Memorystore for Memcached |
memcache.googleapis.com |
Redis용 Memorystore |
redis.googleapis.com |
Message Streams API |
messagestreams.googleapis.com |
마이크로서비스 API |
microservices.googleapis.com |
Model Armor |
modelarmor.googleapis.com |
Network Connectivity Center |
networkconnectivity.googleapis.com |
Network Intelligence Center |
networkmanagement.googleapis.com |
네트워크 서비스 등급 |
compute.googleapis.com |
Persistent Disk |
compute.googleapis.com |
Oracle Database@Google Cloud |
oracledatabase.googleapis.com |
Parallelstore |
parallelstore.googleapis.com |
정책 분석자 |
policyanalyzer.googleapis.com |
정책 문제 해결 도구 |
policytroubleshooter.googleapis.com |
점진적 출시 |
progressiverollout.googleapis.com |
Pub/Sub |
pubsub.googleapis.com |
Public Certificate Authority |
publicca.googleapis.com |
추천자 |
recommender.googleapis.com |
원격 빌드 실행 |
remotebuildexecution.googleapis.com |
Retail API |
retail.googleapis.com |
사이버 보험 허브 |
riskmanager.googleapis.com |
SaaS Service Management API |
saasservicemgmt.googleapis.com |
SecLM API |
seclm.googleapis.com |
Secret Manager |
secretmanager.googleapis.com |
Security Command Center |
securitycenter.googleapis.com securitycentermanagement.googleapis.com securityposture.googleapis.com |
Cloud Data Loss Prevention |
dlp.googleapis.com |
Service Account Credentials API |
iamcredentials.googleapis.com |
서비스 디렉터리 |
servicedirectory.googleapis.com |
서비스 네트워킹 |
servicenetworking.googleapis.com |
Spanner |
spanner.googleapis.com |
Speaker ID |
speakerid.googleapis.com |
Speech-to-Text |
speech.googleapis.com |
Storage Insights |
storageinsights.googleapis.com |
Storage Transfer Service |
storagebatchoperations.googleapis.com |
Text-to-Speech |
texttospeech.googleapis.com |
Timeseries Insights API |
timeseriesinsights.googleapis.com |
Transcoder API |
transcoder.googleapis.com |
Transfer Appliance |
transferappliance.googleapis.com |
VM Manager |
osconfig.googleapis.com |
Vertex AI API |
aiplatform.googleapis.com |
Vertex AI Workbench |
notebooks.googleapis.com |
Firebase용 Vertex AI |
firebasevertexai.googleapis.com |
Virtual Private Cloud(VPC) |
compute.googleapis.com |
Video Search API |
cloudvideosearch.googleapis.com |
Video Stitcher API |
videostitcher.googleapis.com |
Web Risk |
webrisk.googleapis.com |
Web Security Scanner |
websecurityscanner.googleapis.com |
워크플로 |
workflows.googleapis.com |
Workload Certificate API |
workloadcertificate.googleapis.com |
미지원 서비스
TLS 암호화 스위트 제한 조직 정책 제약조건은 다음 서비스에는 적용되지 않습니다.
- App Engine(
*.appspot.com
) - Cloud Run Functions(
*.cloudfunctions.net
), - Cloud Run(
*.run.app
) - Private Service Connect
- 커스텀 도메인
이러한 서비스의 TLS 암호화 스위트를 제한하려면 SSL 보안 정책과 함께 Cloud Load Balancing을 사용하세요.
Google Cloud 암호화 스위트 환경설정
지원되는 서비스의 엔드포인트는 AES-128보다 AES-256을, ChaCha20보다 AES-256을 우선시합니다. AES-256을 지원하는 클라이언트는 구성을 변경하지 않고도 AES-256으로 성공적으로 협상해야 합니다.