컨테이너 메타데이터를 사용하는 VM 생성 방지

조직의 리소스가 지원 중단된 컨테이너 시작 에이전트 및 관련 gce-container-declaration 메타데이터를 사용하지 않도록 하려면 조직 정책을 적용하는 것이 좋습니다. 관리형 제약조건 compute.managed.disableVmsWithContainerStartupAgent이 적용되면 지원 중단된 메타데이터를 사용하는 리소스 생성이 사용 중지됩니다.

이 문서에서는 다음 작업을 수행하는 방법을 설명합니다.

  • 컨테이너 시작 에이전트를 사용하는 Compute Engine 인스턴스 생성을 사용 중지하는 조직 정책을 적용합니다.
  • 테스트 실행 모드에서 정책을 적용하여 조직 정책의 영향을 모니터링합니다.
  • 로그 탐색기를 사용하여 지원 중단된 에이전트를 사용하려는 프로젝트를 식별합니다.

컨테이너 메타데이터를 사용하는 VM 생성을 사용 중지하는 조직 정책 적용

지원 중단된 컨테이너 시작 에이전트를 사용하는 리소스 생성을 방지하려면 Google에서는 조직 정책을 적용하는 것이 좋습니다. constraints/compute.managed.disableVmsWithContainerStartupAgent 제약조건은 gce-container-declaration 메타데이터 키로 새 리소스가 생성되지 않도록 합니다. 이 제약조건은 기존 인스턴스 또는 인스턴스 템플릿에 영향을 주지 않습니다.

콘솔 Google Cloud Google Cloud CLI 또는 Compute Engine API를 사용하여 이 제약조건을 적용할 수 있습니다.

콘솔

콘솔을 사용하여 조직 정책을 설정하려면 다음 단계를 완료합니다.

  1. 콘솔에서 조직 정책 페이지로 이동합니다. Google Cloud

    조직 정책으로 이동

  2. 프로젝트 선택 도구에서 조직 정책을 수정하려는 프로젝트, 폴더, 조직을 선택합니다.

    조직 정책 페이지에 사용 가능한 조직 정책 제약조건의 목록이 표시됩니다.

  3. 제약조건 목록에서 지원 중단된 컨테이너 시작 에이전트 (konlet)를 사용하는 Compute Engine 인스턴스 생성 사용 중지 제약조건을 선택합니다. 표시되는 정책 세부정보 페이지에는 제약조건이 설명되어 있고 제약조건이 적용되는 방법에 관한 정보가 제공됩니다.

  4. 이 리소스의 조직 정책을 업데이트하려면 정책 관리 를 클릭합니다.

  5. 정책 수정 페이지에서 상위 정책 재정의 를 클릭합니다.

  6. 규칙 추가 를 선택합니다.

  7. **시행** 에서 **사용** 을 선택합니다.

  8. 필요에 따라 조직 정책 변경사항이 적용되기 전에 영향을 미리 보려면 변경사항 테스트 를 클릭합니다. 조직 정책 변경사항 테스트에 대한 자세한 내용은 정책 시뮬레이터로 조직 정책 변경사항 테스트를 참조하세요.

  9. 테스트 실행 모드의 조직 정책을 적용하려면 테스트 실행 정책 설정 을 클릭합니다. 자세한 내용은 라이브 정책에서 테스트 실행 모드의 조직 정책 만들기를 참조하세요.

  10. 테스트 실행 모드의 조직 정책이 의도한 대로 작동하는지 확인한 후 정책 설정 을 클릭하여 라이브 정책을 설정합니다.

gcloud

  1. 조직 정책을 정의하는 YAML 파일을 만듭니다.

    name: RESOURCE_TYPE/RESOURCE_ID/policies/compute.managed.disableVmsWithContainerStartupAgent
    spec:
      rules:
      - enforce: true
    dryRunSpec:
      rules:
      - enforce: true
    

    다음을 바꿉니다.

    • RESOURCE_TYPE: organizations, folders 또는 projects

    • RESOURCE_ID 를 조직 ID, 폴더 ID, 프로젝트 ID 또는 프로젝트 번호(RESOURCE_TYPE에 지정된 리소스 유형에 따라)로 바꿉니다.

    다음 예시에서는 ID가 123456인 프로젝트의 조직 정책을 적용하는 YAML 파일을 보여줍니다.

    name: projects/123456/policies/compute.managed.disableVmsWithContainerStartupAgent
    spec:
      rules:
      - enforce: true
    dryRunSpec:
      rules:
      - enforce: true
    

    필요에 따라 태그에 따라 조직 정책을 조건부로 설정하려면 condition 블록을 rules에 추가합니다. 조건부 규칙을 조직 정책에 추가하는 경우 비조건부 규칙을 최소 하나 이상 추가해야 합니다. 그렇지 않으면 정책을 저장할 수 없습니다. 자세한 내용은 태그를 사용하여 조직 정책 설정을 참조하세요.

  2. org-policies set-policy 명령어를 dryRunSpec 플래그와 함께 실행하여 테스트 실행 모드에서 조직 정책을 설정합니다.

     gcloud org-policies set-policy POLICY_PATH \
       --update-mask=dryRunSpec
    

    POLICY_PATH를 조직 정책 YAML 파일의 전체 경로로 바꿉니다.

    테스트 실행 조직 정책에 대한 자세한 내용은 테스트 실행 모드의 조직 정책 만들기를 참조하세요.

  3. policy-intelligence simulate orgpolicy 명령어를 사용하여 조직 정책 변경사항이 적용되기 전에 영향을 미리 봅니다.

    gcloud policy-intelligence simulate orgpolicy \
      --organization=ORGANIZATION_ID \
      --policies=POLICY_PATH
    

    다음을 바꿉니다.

    • ORGANIZATION_ID를 조직 ID(예: 1234567890123)로 바꿉니다. 여러 조직에 대한 변경사항 시뮬레이션은 지원되지 않습니다.

    • POLICY_PATH 를 조직 정책 YAML 파일의 전체 경로로 바꿉니다.

    조직 정책 변경사항 테스트에 대한 자세한 내용은 정책 시뮬레이터로 조직 정책 변경사항 테스트를 참조하세요.

  4. 테스트 실행 모드의 조직 정책이 의도한 대로 작동하는지 확인한 후 org-policies set-policy 명령어와 spec 플래그를 사용하여 라이브 정책을 설정합니다.

    gcloud org-policies set-policy POLICY_PATH \
      --update-mask=spec
    

    POLICY_PATH를 조직 정책 YAML 파일의 전체 경로로 바꿉니다.

REST

조직 정책을 설정하려면 organizations.policies.create 메서드를 사용합니다.

POST https://orgpolicy.googleapis.com/v2/{parent=organizations/ORGANIZATION_ID}/policies

요청 JSON 본문에는 조직 정책의 정의가 포함됩니다. 이 제약조건이 매개변수를 지원하지 않으면 rules 아래의 parameters 블록을 생략합니다.

{
  "name": "RESOURCE_TYPE/RESOURCE_ID/policies/compute.managed.disableVmsWithContainerStartupAgent",
  "spec": {
    "rules": [
      {
        "enforce": true,
      }
    ]
  },
  "dryRunSpec": {
    "rules": [
      {
        "enforce": true,
      }
    ]
  }
}

다음을 바꿉니다.

  • RESOURCE_TYPE: organizations, folders 또는 projects

  • RESOURCE_ID 를 조직 ID, 폴더 ID, 프로젝트 ID 또는 프로젝트 번호(RESOURCE_TYPE에 지정된 리소스 유형에 따라)로 바꿉니다.

다음 예시에서는 ID가 123456인 프로젝트의 조직 정책을 적용하는 요청 본문을 보여줍니다.

  {
    "name": "projects/123456/policies/compute.managed.disableVmsWithContainerStartupAgent",
    "spec": {
      "rules": [
        {
          "enforce": true,
        }
      ]
    },
    "dryRunSpec": {
      "rules": [
        {
          "enforce": true,
        }
      ]
    }
  }
  ```

Optionally, to make the organization policy conditional on a tag, add a
`condition` block to the `rules`. If you add a conditional rule to an
organization policy, you must add at least one unconditional rule or the
policy cannot be saved. For more details, see
[Setting an organization policy with tags](/resource-manager/docs/organization-policy/tags-organization-policy).

For more information about dry-run organization policies, see
[Create an organization policy in dry-run mode](/resource-manager/docs/organization-policy/dry-run-policy).

테스트 실행 모드에서 정책을 적용하여 지원 중단된 메타데이터 사용량 모니터링

컨테이너 선언 메타데이터를 사용하는 인스턴스 생성을 차단하는 정책을 직접 적용하는 대신 테스트 실행 모드에서 정책을 적용할 수 있습니다. 이 설정을 사용하면 실제로 작업에 영향을 주지 않고 정책이 차단할 수 있는 작업을 모니터링하고 로깅할 수 있습니다. 자세한 내용은 테스트 실행 모드의 조직 정책 만들기를 참조하세요.

작업이 테스트 실행 정책을 트리거하면 (gce-container-declaration 메타데이터 키로 인스턴스를 만들려고 하는 경우) Cloud 감사 로그에 로그 항목이 생성됩니다.

지원 중단된 에이전트를 사용하려는 프로젝트를 식별하려면 다음 단계를 완료합니다.

  1. 콘솔에서 로그 탐색기 페이지로 이동합니다. Google Cloud

    로그 탐색기로 이동

  2. 쿼리 창에 다음 쿼리를 입력합니다.

    protoPayload.metadata.dryRun="true"
    protoPayload.methodName="CheckOrgPolicy"
    protoPayload.resourceName =~ "/compute.managed.disableVmsWithContainerStartupAgent"
    
  3. 쿼리 실행 을 클릭합니다.

  4. 로그 항목을 검토하여 지원 중단된 에이전트를 사용하려는 프로젝트를 식별합니다. 테스트 실행 위반 로그의 특성은 다음과 같습니다.

    • orgpolicy.googleapis.com과 관련이 있습니다.
    • protoPayload.metadata.dryRun 필드가 true로 설정됩니다.
    • constraints/compute.managed.disableVmsWithContainerStartupAgent 제약조건이 위반 세부정보에 포함됩니다.
  5. 감사 로그의 정보를 검토하여 지원 중단된 에이전트가 여전히 사용되는 위치와 이유를 파악합니다. 이 정보는 이러한 워크로드를 지원되는 대안으로 마이그레이션하는 데 도움이 될 수 있습니다.

  6. 테스트 실행 모드의 조직 정책이 의도한 대로 작동하는지 확인한 후 시행 상태를 테스트 실행 모드에서 라이브로 변경하여 정책을 적용합니다.

로그 탐색기 사용에 대한 자세한 내용은 로그 탐색기를 사용하여 로그 보기를 참조하세요.

다음 단계