원격 저장소 제한

이 문서에서는 조직 정책 서비스를 사용하여 Dataform 저장소를 연결할 수 있는 서드 파티 원격 Git 저장소 풀을 제한하는 방법을 보여줍니다.

시작하기 전에

dataform.restrictGitRemotes 정책을 설정하거나 수정하기 전에 허용하려는 원격 Git 저장소의 전체 URL을 찾습니다.

이미 Dataform 저장소에 연결된 원격 Git 저장소의 전체 URL을 찾으려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 Dataform 페이지로 이동합니다.

    Dataform으로 이동

  2. 저장소를 선택한 후 설정을 클릭합니다.

    Dataform 페이지에 표시된 원격 저장소의 URL은 단축된 URL이므로 dataform.restrictGitRemotes 정책에 사용될 수 없습니다.

  3. 설정 페이지의 Git 연결 설정에서 저장소 소스 값을 복사합니다.

    저장소 소스 값은 원격 저장소의 전체 URL입니다. 이 URL은 dataform.restrictGitRemotes 정책에서 사용할 수 있습니다.

필요한 역할

조직 정책을 관리하는 데 필요한 권한을 얻으려면 관리자에게 조직의 조직 정책 관리자(roles/orgpolicy.policyAdmin) IAM 역할을 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 조직 정책을 관리하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 확장하세요.

필수 권한

조직 정책을 관리하려면 다음 권한이 필요합니다.

  • orgpolicy.constraints.list
  • orgpolicy.policies.create
  • orgpolicy.policies.delete
  • orgpolicy.policies.list
  • orgpolicy.policies.update
  • orgpolicy.policy.get
  • orgpolicy.policy.set

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

원격 Git 저장소 제한 정보

GitHub 또는 GitLab 저장소에 Dataform 저장소를 연결할 수 있습니다.

악의적인 행위자가 보호되지 않는 저장소 사본을 통해 Dataform 코드베이스 및 액세스 토큰에 액세스하지 못하도록 Dataform 저장소가 연결할 수 있는 원격 저장소 풀을 제한해야 할 수 있습니다.

조직 정책 서비스를 사용하여 Dataform에서 연결할 수 있는 Git 저장소 URL을 제한하는 조직 정책을 만들 수 있습니다.

Dataform에서 원격 Git 저장소를 제한하는 제약조건은 다음과 같습니다.

constraints/dataform.restrictGitRemotes

제약조건을 사용하려면 Dataform 저장소에 연결할 수 있는 원격 Git 저장소의 URL 목록 allowedValues로 조직 정책을 만듭니다. 원격 Git 저장소는 전체 URL 주소로 식별됩니다.

dataform.restrictGitRemotes 정책은 소급 적용됩니다. 즉, 제약조건이 기존 Dataform 저장소에 영향을 미칩니다.

조직 정책이 적용되면 Dataform 저장소는 allowedValues 목록에 나열된 원격 Git 저장소에만 연결할 수 있습니다. 조직 정책에 명시적으로 정의되지 않은 원격 Git 저장소는 Dataform 저장소에 연결할 수 없습니다.

dataform.restrictGitRemotes 정책을 설정하지 않으면 Dataform 저장소와 원격 Git 저장소 간의 통신이 제한되지 않습니다.

다음과 같은 방법으로 dataform.restrictGitRemotes 정책을 사용할 수 있습니다.

Allow all
Dataform 저장소는 모든 원격 저장소 URL에 연결할 수 있습니다. 조직에서 원격 저장소와의 통신을 차단하지 않으려면 이 옵션을 선택합니다. 또는 모든 원격 저장소 URL을 허용하려면 조직 정책을 설정하지 않은 상태로 둡니다.
URL의 allowedValues 목록
Dataform 저장소는 허용된 원격 저장소에만 연결할 수 있습니다. 데이터 무단 반출을 방지하려면 이 옵션을 선택하세요.
Deny all
Dataform 저장소는 원격 URL에 연결될 수 없습니다. 조직에서 모든 통신을 차단하고 Dataform 저장소를 사용하려면 이 옵션을 선택하세요.

허용되는 원격 Git 저장소 사양

  • 목록 제약조건은 GitHub 및 GitLab 저장소에만 적용할 수 있습니다.

  • 조직 정책은 소급해서 적용되며 기존 Dataform 저장소에 영향을 미칩니다.

  • 이 제약조건은 allowedValues를 수락하여 다른 모든 원격 Git 저장소 또는 Deny all에 대한 연결을 차단합니다. 기본값은 Allow all입니다. 설정되지 않은 조직 정책은 모든 원격 Git 저장소와 통신할 수 있습니다. 조직 정책을 allowedValues로 설정하는 것이 좋습니다.

  • 이는 사용자 본인 또는 정책을 관리하고 유지보수하는 데 필요한 권한이 있는 관리자의 책임입니다. 조직 내 정책 관리자에 대한 커뮤니케이션을 보장해야 합니다.

조직 수준에서 조직 정책 제약조건 설정

콘솔

  1. /조직 정책/조직 정책 페이지로 이동합니다.

    조직 정책으로 이동

  2. 필요한 경우 프로젝트 드롭다운 메뉴에서 필요한 조직을 선택합니다.
  3. Dataform의 git 원격 저장소 제한을 클릭합니다.
  4. 정책 관리를 클릭합니다. 정책 관리 버튼을 클릭할 수 없으면 올바른 권한이 없는 것입니다.
  5. 맞춤설정을 선택하여 특정 원격 Git 저장소의 조직 정책을 설정합니다.

    조직 정책 수정 페이지의 맞춤설정 옵션

  6. 필요한 정책 시행정책 유형을 선택합니다.

  7. 정책 값에서 커스텀을 선택합니다.

  8. 원격 Git 저장소의 전체 URL을 입력합니다.

  9. 새 정책 값을 클릭하고 필요에 따라 원격 Git 저장소의 전체 URL을 입력합니다.

  10. 저장을 클릭하여 제약조건을 적용합니다.

gcloud

원격 Git 저장소의 제약조건을 설정하려면 먼저 조직 ID가 필요합니다. organizations list 명령어를 실행하고 응답에서 숫자 ID를 찾아 조직 ID를 찾을 수 있습니다.

gcloud organizations list

gcloud CLI는 조직 목록을 다음 형식으로 반환합니다.

DISPLAY_NAME               ID
example-organization1      29252605212
example-organization2      1234567890

gcloud resource-manager org-policies set-policy 명령어를 사용하여 조직 정책을 설정합니다. 정책을 JSON 또는 YAML 파일로 제공해야 합니다. 다음 형식으로 JSON 파일을 만듭니다.

{
  "name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes",
  "spec": {
    "rules": [
      {
        "values": {
          "allowedValues": ["https://github.com/example/allowed-repository.git"]
        }
      }
    ]
  }
}

ORGANIZATION_ID를 조직의 숫자 ID로 바꿉니다.

Dataform 저장소에서 원격 Git 저장소에 연결할 수 없도록 하려면 denyAlltrue로 설정하여 조직 정책을 설정하면 됩니다.

{
  "name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes",
  "spec": {
    "rules": [
      {
        "denyAll": true
      }
    ]
  }
}

ORGANIZATION_ID를 조직의 숫자 ID로 바꿉니다.

API

setOrgPolicy() API를 사용하여 제약조건을 정의합니다. Dataform은 사용자가 지정한 allowedValue 목록의 원격 Git 저장소 URL에 연결할 수 있습니다.

예를 들어 다음은 선택한 원격 Git 저장소 Dataform 저장소를 연결할 수 있는 조직에 dataform.restrictGitRemotes 제약조건을 적용하기 위한 요청입니다.

POST https://orgpolicy.googleapis.com/v2/organizations/ORGANIZATION_ID/policies

여기서 ORGANIZATION_ID는 조직의 숫자 ID입니다.

이제 요청 본문에서 이 제약조건에 필요한 조직 정책을 제공합니다.

{
  "name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes",
  "spec": {
    "rules": [
      {
        "values": {
          "allowedValues": ["https://github.com/example/allowed-repository.git"]
        }
      }
    ]
  }
}
Replace <code><var>ORGANIZATION_ID</var></code> with the numeric ID
of the organization.

Dataform 저장소에서 원격 Git 저장소에 연결할 수 없도록 하려면 denyAlltrue로 설정하여 조직 정책을 설정하면 됩니다.

{
  "name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes",
  "spec": {
    "rules": [
      {
        "denyAll": true
      }
    ]
  }
}
 
Replace <code><var>ORGANIZATION_ID</var></code> with the numeric ID
of the organization.

조직 정책이 이미 설정된 경우 조직 정책 정의를 요청 본문으로 사용하여 다음 요청을 실행해야 합니다.

PATCH https://orgpolicy.googleapis.com/v2/organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes

프로젝트 수준에서 조직 정책 설정

프로젝트 수준에서 조직 정책을 설정하면 조직 수준의 조직 정책이 재정의되거나 병합됩니다. 병합되는 경우 denyAllallowedValues보다 우선 적용됩니다. 예를 들어 조직 수준의 조직 정책이 denyAll로 설정되고 프로젝트 수준의 병합된 정책이 allowedValues 목록에 원격 저장소 URL을 나열하는 경우 Dataform이 원격 저장소에 연결할 수 없습니다. 이 경우 Dataform이 원격 저장소에 연결될 수 있도록 프로젝트 수준의 조직 정책이 조직 수준 정책을 재정의해야 합니다. 조직 정책 계층 구조에 대해 자세히 알아보려면 계층 구조 평가 이해를 참조하세요.

콘솔

조직 수준에서 조직 정책 제약조건 설정에 설명된 것과 동일한 절차를 따르지만, 조직 대신 프로젝트 선택기에서 원하는 프로젝트를 선택합니다.

프로젝트 선택기

gcloud

gcloud resource-manager org-policies set-policy 명령어를 사용하여 조직 정책을 설정합니다. 정책을 JSON 또는 YAML 파일로 제공해야 합니다.

다음 형식으로 JSON 파일을 만듭니다.

{
  "name": "projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes",
  "spec": {
    "rules": [
      {
        "values": {
          "allowedValues": ["https://github.com/example/allowed-repository.git"]
        }
      }
    ]
  }
}

PROJECT_ID_OR_NUMBER를 이 조직 정책의 프로젝트 ID 또는 프로젝트 번호로 바꿉니다.

그런 다음 요청을 사용해서 파일을 전달합니다.

gcloud resource-manager org-policies set-policy MY_POLICY.JSON --project=PROJECT_ID

API

setOrgPolicy() API를 사용하여 제약조건을 정의합니다. Dataform은 사용자가 지정한 allowedValue 목록의 원격 Git 저장소 URL에 연결할 수 있습니다.

예를 들어 다음은 Dataform 저장소가 선택한 원격 Git 저장소에만 연결할 수 있고 constraints/dataform.restrictGitRemotes 정책이 아직 설정되지 않은 조직에 dataform.restrictGitRemotes 제약조건을 적용하기 위한 요청입니다.

POST https://orgpolicy.googleapis.com/v2/projects/PROJECT_ID_OR_NUMBER/policies

요청 본문에는 이 제약조건에 필요한 조직 정책이 포함됩니다.

{
  "name": "projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes",
  "spec": {
    "rules": [
      {
        "values": {
          "allowedValues": ["https://github.com/example/allowed-repository.git"]
        }
      }
    ]
  }
}

PROJECT_ID_OR_NUMBER를 이 요청의 프로젝트 ID 또는 프로젝트 번호로 바꿉니다.

다음은 Dataform 저장소가 선택한 원격 Git 저장소에만 연결할 수 있고 constraints/dataform.restrictGitRemotes 정책이 이미 설정된 조직에 dataform.restrictGitRemotes 제약조건을 적용하기 위한 요청입니다.

PATCH https://orgpolicy.googleapis.com/v2/projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes

요청 본문에는 이 제약조건에 필요한 조직 정책이 포함됩니다.

{
  "name": "projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes",
  "spec": {
    "rules": [
      {
        "values": {
          "allowedValues": ["https://github.com/example/allowed-repository.git"]
        }
      }
    ]
  }
}

PROJECT_ID_OR_NUMBER를 이 요청의 프로젝트 ID 또는 프로젝트 번호로 바꿉니다.

허용되는 Git 원격 저장소 권장사항

  • 데이터 무단 반출 위험을 완화하려면 신뢰할 수 있는 원격 Git 저장소 선택항목을 허용하도록 dataform.restrictGitRemotes 제약조건을 명시적으로 설정합니다.

  • 원격 Git 저장소에 연결되지 않은 Dataform 저장소만 사용하는 경우에는 dataform.restrictGitRemotes 제약조건을 Deny All로 설정합니다.

  • 이 제약조건과 함께 deniedValues 목록을 사용하지 마세요. deniedValues 목록에 값을 정의하면 deniedValues 목록에 있는 원격 Git 저장소만 연결에서 제한됩니다. Dataform을 연결할 수 있는 원격 Git 저장소를 정확하게 제어해야 할 경우, 이 방식은 보안상 문제가 될 수 있습니다. allowedValues 목록에서 특정 원격 Git 저장소를 삭제하려면 하위 계층의 deniedValues 목록에 넣는 대신 allowedValues 목록에서 이를 삭제하도록 기존 조직 정책을 업데이트합니다.

  • 리소스 계층의 대부분에 적용할 정책을 설정하되 특정 프로젝트를 제외시키려면 프로젝트의 모든 Dataform 저장소가 원격 Git 저장소와 연결될 수 있도록 restoreDefault 객체를 지정하여 setOrgPolicy 메서드를 사용하여 기본 조직 정책을 복원해야 합니다. 프로젝트에 현재 적용된 정책은 기본 설정의 영향을 받지 않습니다.

  • 조직 정책IAM 역할과 함께 사용하면 Dataform 코드베이스에 대한 액세스를 더 효과적으로 제어할 수 있습니다.

  • 조직 정책이 사용 설정된 조직 또는 프로젝트 내의 모든 Dataform 저장소에 이 정책이 적용됩니다. 이것이 문제가 될 경우에는 조직 정책이 적용되지 않는 다른 프로젝트에서 다른 서비스 및 제품을 설정하고 필요한 경우 공유 VPC를 사용하는 것이 좋습니다.

  • dataform.restrictGitRemotes 정책을 설정하기 전에 조직 정책 및 조직 내 관리자에 대한 커뮤니케이션을 보장해야 합니다. 이는 사용자 본인 또는 정책을 관리하고 유지보수하는 데 필요한 권한이 있는 관리자의 책임입니다.

다음 단계