이 페이지에서는 이그레스 프록시 구성을 위한 기본 요건, 조직 ID를 가져오고, 조직 액세스 제한 헤더를 추가하고, 대상 URL 목록으로 프록시를 구성하는 방법을 설명합니다.
Google Cloud를 관리하는 Google Cloud 관리자와 이그레스 프록시를 구성하는 이그레스 프록시 관리자는 협력하여 조직 액세스 제한을 구성해야 합니다. 조직 액세스 제한으로 검증된 파트너 솔루션에 대한 자세한 내용은 검증된 파트너 솔루션을 참조하세요.
시작하기 전에
이그레스 프록시 관리자인 경우 조직 액세스 제한 헤더를 추가하도록 이그레스 프록시를 구성하기 전에 다음 기본 요건을 완료해야 합니다.
조직에서 Google Cloud 관리자 및 이그레스 프록시 관리자 역할이 다른 경우 Google Cloud 관리자가 이그레스 프록시 관리자와 협력하여 이그레스 프록시를 구성해야 합니다.
조직에서 모든 사용자의 아웃바운드 트래픽이 이그레스 프록시를 통과하도록 조직 방화벽 규칙을 구성하거나 관리 기기를 구성합니다.
조직의 이그레스 프록시에 다음 기능이 포함되는지 확인합니다.
- 헤더 삽입 이그레스 프록시를 통과하는 순회 아웃바운드 요청에 커스텀 HTTP 헤더를 삽입합니다.
- TLS 검사. 이그레스 프록시로의 트래픽이 암호화되어 있는 경우 이그레스 프록시는 패킷을 복호화하고, 헤더를 삽입하고, 패킷을 대상으로 보내기 전에 다시 암호화해야 합니다.
헤더 필터링 및 삽입 선택사항. 다음 필터 중 하나 이상을 지원한 다음 필터 조건과 일치하는 요청에 대해서만 헤더를 추가합니다.
- 대상 URL. 이그레스 프록시가 일치할 수 있는 대상 URL 목록입니다.
- 기기 ID. 이그레스 프록시가 일치할 수 있는 기기 ID 목록입니다. 기기 ID가 이그레스 프록시에 전파되어 있어야 합니다.
- 사용자 ID. 이그레스 프록시가 일치할 수 있는 사용자 ID의 목록입니다. 사용자 ID가 이그레스 프록시에 전파되어 있어야 합니다.
조직 ID 가져오기
Google Cloud 관리자는 조직 액세스 제한 헤더에 추가할 수 있도록 Google Cloud 조직 ID를 가져와야 합니다.
조직 리소스 ID를 찾으려면 다음 명령어를 실행하세요.
gcloud organizations list
이 명령어는 사용자가 속한 모든 조직 리소스와 해당 조직 리소스 ID를 나열합니다.
조직 ID를 가져온 후 조직 액세스 제한 헤더를 추가하거나 이그레스 프록시 관리자와 협력하여 헤더를 추가할 수 있습니다.
조직 액세스 제한 헤더 추가
이그레스 프록시 관리자가 조직 액세스 제한 헤더를 아웃바운드 요청에 추가하려면 다음을 수행합니다.
- 헤더를 만듭니다.
- 헤더를 인코딩합니다.
- 이그레스 프록시를 구성합니다.
헤더 만들기
다음 형식으로 헤더의 JSON 표현을 만듭니다.
X-Goog-Allowed-Resources: HEADER_VALUE
HEADER_VALUE
에는 승인된 Google Cloud 조직 ID의 쉼표로 구분된 목록이 포함됩니다. 그런 후 웹 안전 base64 인코딩으로 값을 인코딩해야 합니다.
HEADER_VALUE
의 JSON 구조는 다음과 같습니다.
{
"resources": [string,..],
"options": string
}
resources
. 문자열 목록입니다. 이 목록의 각 문자열은 Google Cloud 조직 ID를 참조해야 합니다. 이 목록의 조직 ID는 평가 중 작성된 조직으로 고려됩니다.options
. 다음 값 중 하나를 포함하는 문자열입니다."strict"
. 모든 요청 유형에 대한 조직 액세스 제한 헤더를 지원되는 Google Cloud 서비스에 적용합니다."cloudStorageReadAllowed"
. Cloud Storage에 대한 읽기 요청을 허용하지만, 모든 요청 유형에 대한 조직 액세스 제한 헤더를 지원되는 Google Cloud 서비스에 적용합니다. 이 옵션은 다음 Cloud Storage 읽기 작업의 액세스를 허용합니다.storage.objects.get
storage.objects.list
storage.objects.getIamPolicy
storage.buckets.get
storage.buckets.list
storage.buckets.getIamPolicy
이 옵션을 설명하기 위해 Alex가 Example Organization의 관리자이고 Lee가 이 조직의 직원인 예시를 살펴보세요. 공개 Cloud Storage 버킷에 정적 콘텐츠를 저장하고 예시 조직 외부에 있는 altostrat.com과 같은 웹사이트가 있다고 가정해 보세요. Alex가 strict
옵션을 사용하여 Lee가 예시 조직에만 액세스할 수 있도록 제한하는 경우, Lee는 altostrat.com이 소유한 공개 Cloud Storage 버킷에 존재하는 altostrat.com의 정적 콘텐츠에 대한 액세스가 거부됩니다. 이러한 동작은 효율적으로 웹사이트를 탐색하는 Lee의 능력에 영향을 미치며 공개 Cloud Storage를 사용하여 정적 콘텐츠를 저장하는 모든 웹사이트에서도 동일한 동작이 발생합니다.
Lee가 altostrat.com의 정적 콘텐츠를 열람할 수 있게 하고, 다른 모든 Google Cloud 액세스를 예시 조직으로만 제한하기 위해 Alex는 cloudStorageReadAllowed
옵션을 사용합니다.
다음은 올바른 조직 액세스 제한 헤더의 예시입니다.
{
"resources": ["organizations/1234", "organizations/3456"],
"options": "strict"
}
헤더 인코딩
조직 ID를 웹 안전 base64 형식으로 인코딩합니다. 인코딩은 RFC 4648 섹션 5 사양을 따라야 합니다.
예를 들어 헤더에 대한 JSON 표현이 authorized_orgs.json
파일에 저장된 경우 파일을 인코딩하려면 다음 basenc 명령어를 실행합니다.
$ cat authorized_orgs.json | basenc --base64url -w0
ewogInJlc291cmNlcyI6IFsib3JnYW5pemF0aW9ucy8xMjM0NTY3ODkiLCAib3JnYW5pemF0aW9ucy8xMDExMTIxMzE0Il0sCiAib3B0aW9ucyI6ICJzdHJpY3QiCn0K
다음은 조직 ID를 인코딩한 후의 헤더 예시입니다.
// Encoded representation
X-Goog-Allowed-Resources: ewogInJlc291cmNlcyI6IFsib3JnYW5pemF0aW9ucy8xMjM0NTY3ODkiLCAib3JnYW5pemF0aW9ucy8xMDExMTIxMzE0Il0sCiAib3B0aW9ucyI6ICJzdHJpY3QiCn0K
// Plain-text representation (As HTTP disallows some characters, encode the organization ID)
// Plain-text representation is included here only for readability
X-Goog-Allowed-Resources: {"resources": ["organizations/1234", "organizations/3456"], "options": "strict"}
이그레스 프록시 구성
관리 기기에서 발새하는 요청에 헤더를 삽입하려면 이그레스 프록시를 구성합니다.
조직의 Google Cloud 사용자가 HTTP 헤더를 명시적으로 제공하는 경우 이그레스 프록시가 사용자 제공 값을 Google Cloud 관리자 제공 값으로 오버라이드합니다.
이 헤더를 Google Cloud 외부의 대상에 추가하지 않으려면 다음 대상이 있는 요청에만 조직 액세스 제한 헤더를 추가하도록 이그레스 프록시를 구성하세요.
*.google.com
*.googleapis.com
*.gcr.io
*.pkg.dev
*.cloudfunctions.net
*.run.app
*.tunnel.cloudproxy.app
*.datafusion.googleusercontent.com
조직 액세스 제한으로 인해 발생하는 오류 메시지에 대한 자세한 내용은 오류 메시지를 참조하세요.
다음 단계
- 조직 액세스 제한 사용 알아보기