프로젝트 이동 분석

이 가이드에서는 Cloud 애셋 인벤토리 Analyze Migrate API를 사용하여 프로젝트를 실제로 이동하기 전에 중요한 정책 시스템 목록에서 경고 및 차단 문제에 대한 자세한 보고서를 확인하는 방법을 설명합니다.

API 사용 설정

API 소비자 프로젝트로 프로젝트를 선택하거나 만들고 Cloud Asset API를 사용 설정합니다.

이 소비자 프로젝트는 분석하고 마이그레이션하려는 프로젝트와 다를 수 있습니다. 소비자 프로젝트는 API 요청을 수행하기 위해 사용자 인증 정보를 생성하는 데 사용됩니다.

다음 섹션에서는 분석하려는 소스 프로젝트에 부여해야 하는 필수 역할 및 권한을 설명합니다.

권한 할당

프로젝트 이동 분석을 수행하려면 Cloud 애셋 뷰어 또는 뷰어와 같이 cloudasset.assets.analyzeMove 권한을 부여하는 역할이 필요합니다.

서비스에 대한 분석을 받으려면 해당 서비스와 관련된 역할도 필요합니다. 이러한 권한에는 다음이 포함됩니다.

  • 소스 프로젝트의 상위 조직 리소스에서 상속된 IAM 정책을 보려면 소스 프로젝트의 상위 조직 리소스에 대한 resourcemanager.organizations.getIamPolicy 권한이 필요합니다.

  • 소스 프로젝트의 상위 폴더에서 상속된 IAM 정책을 보려면 소스 프로젝트의 상위 폴더에 대한 resourcemanager.folders.getIamPolicy 권한이 필요합니다.

  • 프로젝트의 IAM 정책을 보려면 소스 프로젝트에 대한 resourcemanager.projects.getIamPolicy 권한이 필요합니다.

  • 이 프로젝트에 상속된 조직 정책을 보려면 소스 프로젝트에 대한 orgpolicy.policy.get 권한이 필요합니다.

  • 이 프로젝트에서 상속된 Compute Engine 방화벽 정책을 보려면 소스 폴더 또는 조직 리소스에 대한 compute.organizations.setSecurityPolicy 권한이 필요합니다.

  • 이 프로젝트에서 상속된 태그를 보려면 소스 프로젝트 또는 해당 상위 노드에 대해 resourcemanager.hierarchyNodes.listEffectiveTags 권한이 필요합니다.

분석 수행

Google Cloud CLI 또는 API를 사용해서 리소스 계층 구조의 현재 위치에서 리소스 마이그레이션을 분석할 수 있습니다.

gcloud

리소스 계층 구조의 현재 위치에서 프로젝트를 마이그레이션할 때의 영향을 분석하려면 gcloud asset analyze-move 명령어를 사용합니다.

gcloud asset analyze-move --project=PROJECT_ID \
  (--destination-folder=FOLDER_ID \
    | --destination-organization=ORGANIZATION_ID)

프로젝트를 다른 폴더로 이동할 때의 영향을 분석하려면 --destination-folder를 사용해서 명령어를 실행합니다.

gcloud asset analyze-move --project=PROJECT_ID \
  --destination-folder=FOLDER_ID

프로젝트를 다른 조직으로 이동할 때의 영향을 분석하려면 --destination-organization을 사용해서 명령어를 실행합니다.

gcloud asset analyze-move --project=PROJECT_ID \
  --destination-organization=ORGANIZATION_ID

각 항목의 의미는 다음과 같습니다.

  • PROJECT_ID는 마이그레이션하려는 프로젝트의 고유 프로젝트 ID입니다. 예를 들면 --myProject123입니다.

  • FOLDER_ID는 분석을 실행할 대상 폴더의 숫자 폴더 ID입니다. 예를 들면 45678901123입니다.

  • ORGANIZATION_ID는 분석을 실행할 대상 조직의 숫자 조직 ID입니다. 예를 들면 78901123456입니다.

API

이동을 수행하지 않고 리소스 계층 구조의 현재 위치에서 프로젝트를 마이그레이션할 때의 영향을 분석하려면 cloudasset.analyzeMove 메서드를 사용합니다.

GET https://cloudasset.googleapis.com/v1/{resource=*/*}: \
  analyzeMove?destinationParent=DESTINATION_NAME

각 항목의 의미는 다음과 같습니다.

  • resource는 분석을 수행할 리소스의 이름입니다. 프로젝트 리소스만 지원되므로 프로젝트 ID 또는 프로젝트 번호여야 합니다. 예를 들면 projects/my-project-id 또는 projects/12345입니다.

  • DESTINATION_NAME은 대상 리소스의 상위 항목을 변경할 Google Cloud 폴더 또는 조직 리소스의 이름입니다. 지정된 대상 상위 항목으로 리소스를 이동할 때의 영향에 대해 분석이 수행됩니다. 대상은 폴더 번호 또는 조직 리소스 번호여야 합니다. 예를 들면 folders/123 또는 organizations/123입니다.

이동 분석 응답

Move Analysis API에서 받은 응답은 서비스 이름별로 그룹화됩니다. 각 서비스 아래에는 이 프로젝트 마이그레이션에 적용되는 경고와 차단 목록이 있습니다. 이 분석에 의해 반환되는 차단 문제는 이를 해결하기 전에 이동을 진행하는 경우 런타임에서 프로젝트 마이그레이션이 차단된다는 의미입니다.

오류 해결

Move Analysis API에서 반환된 오류가 있으면 표준 gRPC 코드 및 Move Analysis API를 통한 프로젝트 분석이 실패한 이유를 설명하는 메시지가 포함됩니다.

다음 표에서는 Move Analysis API에서 반환될 수 있는 오류 코드를 설명합니다.

오류 이름 오류 코드 설명
잘못된 인수 3 잘못된 리소스 이름과 같이 잘못된 인수가 있는 프로젝트에서 API를 호출하면 반환됩니다.
권한 거부됨 7 분석을 수행하는 데 필요한 권한이 없거나 소스 프로젝트가 없으면 반환됩니다.
내부 13 Identity and Access Management와 같은 정책 시스템 호출 또는 조직 정책과 관련된 문제가 있으면 반환됩니다. 그렇다고 해서 마이그레이션이 불가능하다는 것을 의미하지는 않으며 서비스 중단을 확인한 후 분석을 다시 시도할 수 있습니다.
사용할 수 없음 14 내부 시스템이 동기화되지 않으면 반환됩니다. 마이그레이션할 수 없다는 의미는 아니며 분석을 다시 시도할 수 있습니다.
인증되지 않음 16 이 분석을 수행할 올바른 사용자 인증 정보를 제공하지 않은 경우 반환됩니다.

오류 메시지 예시

다음 예시에서는 마이그레이션할 프로젝트에 대한 cloudasset.assets.analyzeMove 권한이 없는 사용자에게 반환되는 오류 코드를 보여줍니다.

{
  "error": {
  "code": 403,
  "message": "Failed to fetch Project: projects/test-project-service-3 to perform
              move analysis.",
  "status": "PERMISSION_DENIED"}
}

일부 정책 시스템은 리소스 이동을 분석하지 못할 수 있습니다. 다음 예시에서는 사용자에게 마이그레이션할 프로젝트에 대한 compute.organizations.setSecurityPolicy 권한이 없는 경우 계층식 방화벽 서비스에서 반환되는 오류를 보여줍니다.

{
  "moveAnalysis": [{
    "displayName": "name hidden",
    "analysis": {
      "warnings": [{
        "detail": "details hidden"
      }]
    }
  }, {
    "displayName": "name hidden",
    "analysis": {
      "warnings": [{
        "detail": "details hidden"
      }]
    }
  }, {
    "displayName": "Hierarchical Firewall",
    "error": {
      "code": 7,
      "message": "Failed to retrieve inherited security policies to perform
                  analysis. Required 'compute.organizations.setSecurityPolicy'
                  permission for {resource ID}"
     }}]
}

다음 단계

Move Analysis API는 프로젝트를 한 조직 리소스에서 다른 조직 리소스로 이동할 때 차단 문제 및 기타 문제를 완화하는 데 도움이 되는 세부정보를 제공합니다. 조직 리소스 간 프로젝트 마이그레이션에 대한 자세한 내용은 프로젝트 마이그레이션을 참조하세요.