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