TLS 버전 제한
이 페이지에서는 전송 계층 보안(TLS) 1.0 또는 1.1을 사용하여 수행된 요청을 거부하여 Google Cloud 리소스에 대한 액세스를 방지하는 방법을 설명합니다.
개요
Google Cloud는 여러 TLS 프로토콜 버전을 지원합니다. 규정 준수 요구사항을 충족하기 위해 이전 TLS 버전을 사용하는 클라이언트의 핸드셰이크 요청을 거부해야 할 수 있습니다. 이렇게 하려면 gcp.restrictTLSVersion
조직 정책 제약조건을 사용하면 됩니다.
gcp.restrictTLSVersion
제약조건은 리소스 계층 구조의 조직, 폴더 또는 프로젝트에 적용할 수 있습니다.
이 제약조건은 명시적 값을 거부하고 다른 모든 값을 허용하는 거부 목록을 사용합니다. 허용 목록을 사용하려고 하면 오류가 발생합니다.
조직 정책 계층 구조 평가의 동작으로 인해 TLS 버전 제한은 지정된 리소스 노드와 모든 하위 요소에 적용됩니다. 예를 들어 조직의 TLS 버전 1.0을 거부하면 해당 조직에서 비롯된 모든 폴더 및 프로젝트(하위)에도 거부됩니다.
하위 리소스의 조직 정책을 업데이트하여 상속된 TLS 버전 제한을 재정의할 수 있습니다. 예를 들어 조직 정책이 조직 수준에서 TLS 1.0을 거부하는 경우 하위 폴더에 별도의 조직 정책을 설정하여 해당 폴더에서 제약조건을 제거할 수 있습니다. 폴더에 하위 요소가 있는 경우 정책 상속으로 인해 폴더의 정책이 각 하위 리소스에도 적용됩니다.
시작하기 전에
- 조직 정책을 설정, 변경 또는 삭제하려면 먼저 조직 정책 관리자(
roles/orgpolicy.policyAdmin
) Identity and Access Management(IAM) 역할을 부여받아야 합니다.
TLS 버전 제한
하나 이상의 TLS 버전을 제한하려면 다음 단계를 완료하세요.
콘솔
Google Cloud 콘솔에서 조직 정책 페이지를 엽니다.
페이지 상단의 프로젝트 선택 도구를 선택합니다.
프로젝트 선택 도구에서 조직 정책을 설정할 리소스를 선택합니다.
조직 정책 페이지의 목록에서 TLS 버전 제한 제약조건을 선택합니다.
이 리소스의 조직 정책을 업데이트하려면 수정을 클릭합니다.
수정 페이지에서 맞춤설정을 선택합니다.
정책 시행에서 시행 옵션을 선택합니다.
조직 정책을 병합하고 평가하려면 상위 요소와 병합을 선택합니다. 상속과 리소스 계층 구조에 대한 자세한 내용은 계층 구조 평가 이해를 참조하세요.
상위 리소스에서 상속된 정책을 재정의하려면 바꾸기를 선택합니다.
규칙 추가를 클릭합니다.
정책 값에서 기본값이 모두 거부로 설정되어 있습니다. 대신 커스텀을 선택합니다.
정책 유형에서 거부를 선택합니다.
커스텀 값에 거부할 TLS 버전을 입력합니다. 유효한 커스텀 값은 다음과 같습니다.
- TLS 1.0의 경우
TLS_VERSION_1
- TLS 1.1의 경우
TLS_VERSION_1_1
TLS 버전을 두 개 이상 제한하는 경우 값 추가를 클릭하고 추가 입력란에 값을 입력합니다.
- TLS 1.0의 경우
조직 정책을 완료하고 적용하려면 저장을 클릭합니다.
gcloud
gcloud org-policies set-policy
명령어를 사용하여 리소스에 조직 정책을 설정합니다.
gcloud org-policies set-policy POLICY_PATH
POLICY_PATH는 조직 정책 파일의 전체 경로이며 YAML 형식을 사용하는 경우 다음과 유사합니다.
name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.restrictTLSVersion
spec:
rules:
- values:
deniedValues:
- TLS_VERSION_1
- TLS_VERSION_1_1
다음으로 대체합니다.
RESOURCE_TYPE
은organizations
,folders
또는projects
입니다.RESOURCE_ID
는RESOURCE_TYPE
에 지정된 리소스 유형에 따라 조직 ID, 폴더 ID, 프로젝트 ID 또는 프로젝트 번호입니다.
다음 명령어를 실행하여 정책이 적용되었는지 확인합니다.
gcloud org-policies describe gcp.restrictTLSVersion --RESOURCE_TYPE=RESOURCE_ID --effective
다음으로 대체합니다.
RESOURCE_TYPE
은organization
,folder
또는project
입니다.RESOURCE_ID
는RESOURCE_TYPE
에 지정된 리소스 유형에 따라 조직 ID, 폴더 ID, 프로젝트 ID 또는 프로젝트 번호입니다.
정책 테스트
TLS 버전 제한 정책 제약조건은 모든 범위 내 서비스에서 테스트될 수 있습니다. 다음 curl 명령어 예시는 Cloud Storage 버킷에 대한 TLS 버전 제한을 검증합니다.
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/GCS_BUCKET_NAME/o" \ --tlsvTLS_VERSION --tls-max TLS_VERSION --ciphers DEFAULT@SECLEVEL=0
--tlsv
와 값 사이에는 공백이 없습니다. 예를 들면 --tlsv1.1
입니다.
다음으로 대체합니다.
GCS_BUCKET_NAME
은 프로젝트의 Cloud Storage 버킷 이름입니다(예:mybucketname
).TLS_VERSION
은 구성된 정책에서 거부된1.0
또는1.1
과 같은 TLS 버전입니다.
다음 curl
요청 예시에서는 GCS_BUCKET_NAME이 mybucketname
으로 설정되고 TLS_VERSION이 1.1
로 설정된 것을 보여줍니다.
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/mybucketname/o" \ --tlsv1.1 --tls-max 1.1 --ciphers DEFAULT@SECLEVEL=0
조직 정책이 TLS_VERSION_X
를 제한하도록 구성된 경우 이 예시 명령어의 정책 제한 프로젝트에서 TLS_VERSION_X
로 리소스에 액세스하려고 시도하면 실패합니다. 이 실패 이유를 설명하는 오류 메시지가 반환됩니다.
Request is disallowed by organization's constraints/gcp.restrictTLSVersion constraint for 'projects/PROJECT_NUMBER' to use service 'SERVICE_NAME.googleapis.com' by violated TLS version `TLS_VERSION_X`
이 출력에는 다음 값이 포함됩니다.
PROJECT_NUMBER
: 이전 명령어에서 참조된 리소스를 호스팅하는 프로젝트 번호입니다.SERVICE_NAME
: TLS 제한 정책에 의해 차단된 범위 내 서비스의 이름입니다.
지원되는 서비스
TLS 버전 제한은 Google 프런트엔드(GFE)에서 서명한 헤더가 있는 모든 Google Cloud 리소스 API에서 지원됩니다.
미지원 서비스
TLS 버전 제한 조직 정책 제약조건은 다음 서비스에는 적용되지 않습니다.
- App Engine(
*.appspot.com
) - Cloud Run Functions(
*.cloudfunctions.net
), - Cloud Run(
*.run.app
) - Private Service Connect
- 커스텀 도메인
이러한 서비스의 TLS 버전을 제한하려면 SSL 정책과 함께 Cloud Load Balancing을 사용하세요. 또한 SSL 정책의 커스텀 제약조건과 함께 사전 정의된 constraints/compute.requireSslPolicy
제약조건을 사용하여 부하 분산기에 대한 TLS 버전 및 암호화 스위트 제한사항을 적용할 수도 있습니다.
다음 단계
- 각 제어 패키지에서 지원되는 제품 알아보기