프로젝트의 ID 및 액세스 관리

이 페이지에서는 Google Distributed Cloud (GDC) 에어 갭 어플라이언스의 애플리케이션 운영자 (AO)를 위한 ID 및 액세스 관리 (IAM) 관행을 설명합니다.

ID 공급업체 (IdP)는 주체의 ID 정보를 생성, 유지, 관리하는 시스템 엔티티입니다. 또한 IdP는 제휴 또는 분산 네트워크 내의 애플리케이션에 인증 서비스를 제공합니다.

로그인

이 섹션에서는 웹 사용자 인터페이스 (UI) 또는 명령줄 인터페이스 (CLI)를 통해 워크로드에 액세스하는 방법을 설명합니다.

웹 UI에 로그인

이 페이지에서는 Google Distributed Cloud (GDC) 에어 갭 어플라이언스 내에서 워크로드와 리소스에 액세스하고 이를 관리하는 방법을 설명합니다. 인증, 관리 API 서버와 Kubernetes 클러스터 모두에 대한 kubeconfig 파일 생성, 세션 비활성 관리 방법을 설명합니다. 이러한 프로세스를 이해하면 프로젝트와 워크로드에 안전하고 안정적으로 액세스할 수 있습니다.

GDC 콘솔 또는 gdcloud CLI를 통해 워크로드에 액세스합니다.

로그인

GDC 콘솔 또는 클러스터에 로그인하려면 다음 단계를 따르세요.

콘솔

새 브라우저 탭에서 다음 URL을 열어 GDC 에어갭 어플라이언스 사용자 인터페이스 (UI)에 액세스합니다.

https://GDC_URL

GDC_URL을 인프라 운영자 (IO)가 제공하는 GDC에 액세스하는 데 사용하는 도메인 이름으로 바꿉니다. URL을 처음 열면 인프라 운영자 (IO)가 페이지를 구성한 경우 GDC가 ID 공급업체 로그인 페이지로 리디렉션합니다.

예를 들어 `org-1`이라는 조직의 콘솔에 로그인하면 다음 페이지가 표시됩니다. 조직-1 프로젝트의 시작 화면이 표시된 콘솔

CLI

액세스 권한이 있는 클러스터에 로그인할 수 있습니다. 모든 클러스터의 CLI 로그인 프로세스는 동일합니다. 클러스터 이름과 관련 kubeconfig 파일만 제공하고 각 클러스터에 별도로 로그인해야 합니다.

로그인하기 전에 다음 사항을 확인하세요.

  • gdcloud CLI 바이너리를 다운로드하고 시스템에 설치합니다. 자세한 내용은 gdcloud CLI 다운로드를 참고하세요.
  • gdcloud CLI 기본 구성을 설정하고 초기화합니다. 로그인 구성 엔드포인트를 가져오는 데 사용되는 올바른 조직 URL을 설정해야 합니다. 자세한 내용은 gdcloud CLI 설치를 참고하세요.
  • 인증 플러그인 gdcloud-k8s-auth-plugin을 설치합니다. 자세한 내용은 gdcloud CLI 인증을 참고하세요.

클러스터에 로그인하려면 다음 단계를 완료하세요.

  1. gdcloud CLI 인스턴스를 인증하여 로그인합니다. 인증하는 방법에는 두 가지가 있습니다.

    • 표준 브라우저 로그인: 브라우저에서 로그인할 때 이 인증 흐름을 사용합니다.

      gdcloud auth login
      
    • 보조 기기 로그인: 기본 기기에 브라우저가 없는 경우 이 인증 흐름을 사용합니다. 이 흐름은 브라우저 액세스 권한이 없는 기본 기기에서 로그인을 시작하고 브라우저 액세스 권한이 있는 보조 기기에서 로그인을 계속합니다.

      1. 브라우저가 없는 기본 기기에서 로그인을 시작합니다.

        gdcloud auth login --no-browser
        

        기본 기기의 명령어는 c단계에서 보조 기기에서 실행해야 하는 다른 gdcloud 명령어를 출력합니다.

      2. 클러스터에 로그인의 1단계를 반복하여 보조 기기에 인증서를 다운로드합니다.

      3. 기본 기기에 인쇄된 명령어를 입력하여 보조 기기에서 로그인을 완료합니다(a단계).

    이 작업은 구성된 ID 공급자(IdP)에 로그인하기 위해 브라우저를 엽니다. 초기 gcloud CLI 설정 중에 설정한 사용자 및 비밀번호를 제공하여 로그인합니다.

  2. 사용자 ID kubeconfig 파일을 변수로 내보냅니다.

    export KUBECONFIG=/tmp/admin-kubeconfig-with-user-identity.yaml
    
  3. 사용자 ID로 kubeconfig 파일을 생성합니다.

    gdcloud clusters get-credentials CLUSTER_NAME
    

    사용자 ID로 kubeconfig 파일이 생성됩니다. 다음 YAML 파일은 예시를 보여줍니다.

    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority-data: <REDACTED>
        server: https://10.200.0.32:443
      name: cluster-name
    contexts:
    - context:
        cluster: cluster-name
        user: cluster-name-anthos-default-user
      name: cluster-name-cluster-name-anthos-default-user
    current-context: cluster-name-cluster-name-anthos-default-user
    kind: Config
    preferences: {}
    users:
    - name: cluster-name-anthos-default-user
      user:
        exec:
            apiVersion: client.authentication.k8s.io/v1
            args:
            - --audience=root-admin
            command: gdcloud-k8s-auth-plugin
            env: null
            installHint: Run 'gdcloud components install gdcloud-k8s-auth-plugin' to use plugin
            interactiveMode: Never
            provideClusterInfo: false
    
  4. 클러스터에 액세스할 수 있는지 확인하려면 생성된 kubeconfig 파일로 사용자 ID를 사용하여 로그인합니다.

    kubectl --kubeconfig /tmp/admin-kubeconfig-with-user-identity.yaml version
    

로그아웃

GDC 콘솔에서 로그아웃하려면 다음 단계를 따르세요.

콘솔

메뉴 바에서 로그아웃을 클릭합니다.

CLI

CLI에서 로그아웃합니다.

gdcloud auth revoke

kubeconfig 파일 수동 생성

KRM API를 직접 호출하여 kubectl CLI로 리소스를 관리하는 경우 관리하는 리소스 유형에 따라 리소스를 호스팅하는 클러스터의 kubeconfig 파일을 생성해야 합니다. 필요한 kubeconfig 파일을 확인하려면 리소스의 문서를 참고하세요.

리소스 유형에 따라 해당 설정을 완료합니다.

관리 API 서버 리소스

Management API 서버의 kubeconfig 파일을 생성하려면 다음 단계를 완료하세요.

  1. MANAGEMENT_API_SERVER 환경 변수를 설정합니다.

    export MANAGEMENT_API_SERVER="root-admin"
    
  2. 관리 API 서버 kubeconfig 파일을 생성하고 사용자 인증 정보를 검증합니다.

    export KUBECONFIG=${HOME}/${MANAGEMENT_API_SERVER:?}-kubeconfig.yaml
    rm ${KUBECONFIG:?}
    gdcloud clusters get-credentials ${MANAGEMENT_API_SERVER:?}
    [[ $(kubectl config current-context) == *${MANAGEMENT_API_SERVER:?}* ]] && echo "Success. Your kubeconfig is at $KUBECONFIG" || echo "Failure"
    

    rm ${KUBECONFIG:?} 명령어는 홈 디렉터리의 기존 kubeconfig 파일을 삭제합니다. 새 kubeconfig 파일을 생성하면 기존 파일이 덮어쓰여집니다. 기존 파일을 덮어쓰거나 삭제하지 않으려면 다른 안전한 위치에 백업하세요.

Kubernetes 클러스터 리소스

다음 단계를 완료하여 베어메탈 Kubernetes 클러스터의 kubeconfig 파일을 생성합니다.

  1. KUBERNETES_CLUSTER 환경 변수를 설정합니다.

    export KUBERNETES_CLUSTER="root-infra"
    
  2. Kubernetes 클러스터 kubeconfig 파일을 생성하고 사용자 인증 정보를 검증합니다.

    export KUBECONFIG=${HOME}/${KUBERNETES_CLUSTER:?}-kubeconfig.yaml
    rm ${KUBECONFIG:?}
    gdcloud clusters get-credentials ${KUBERNETES_CLUSTER:?}
    [[ $(kubectl config current-context) == *${KUBERNETES_CLUSTER:?}* ]] && echo "Success. Your kubeconfig is at $KUBECONFIG" || echo "Failure"
    

    rm ${KUBECONFIG:?} 명령어는 홈 디렉터리의 기존 kubeconfig 파일을 삭제합니다. 새 kubeconfig 파일을 생성하면 기존 파일이 덮어쓰여집니다. 기존 파일을 덮어쓰거나 삭제하지 않으려면 다른 안전한 위치에 백업하세요.

세션 비활성 로그아웃

세션에서 15분 이상 활동이 없으면 GDC 콘솔과 gdcloud CLI에서 로그아웃됩니다. GDC는 세션 비활성 상태를 열려 있는 세션 중에 커서나 키보드 움직임과 같은 활성 참여가 없는 기간으로 간주합니다. 활성 세션은 사용자 활동이 있는 경우 최대 12시간 동안 지속됩니다.

콘솔

세션 비활성 상태의 경우 GDC 콘솔에서 로그아웃됩니다. GDC 콘솔에서 비활성으로 인해 로그아웃되기 2분 전에 로그아웃을 경고하는 대화상자가 표시됩니다.

비활성으로 인해 사용자를 로그아웃하기 전 99초의 타이머가 있는 대화상자를 보여주는 콘솔 UI

활동이 없어 로그아웃된 후 다음 화면이 표시됩니다.

세션 로그아웃에 관한 텍스트가 포함된 배너가 있는 로그인 화면을 보여주는 콘솔 UI: &#39;세션이 너무 오랫동안 비활성 상태여서 시스템에서 로그아웃되었습니다. 다시 로그인하거나 관리자에게 문의하여 도움을 받으시기 바랍니다.&#39;

GDC 콘솔에 다시 로그인하려면 ID 공급업체를 선택하고 로그인 사용자 인증 정보를 추가합니다. 모니터링 대시보드와 같은 서비스를 사용하고 있는데 비활성으로 인해 GDC 콘솔에서 로그아웃된 경우 다시 로그인하여 액세스 권한을 얻으세요.

CLI

세션이 비활성 상태이면 gdcloud CLI에서 로그아웃됩니다. gdcloud CLI에서 로그아웃한 후 명령어를 실행하려고 하면 다음과 같은 승인 오류가 표시됩니다.

Error: error when creating kube client: unable to create k8sclient: Unauthorized

gdcloud CLI에 다시 로그인하려면 로그인의 CLI 단계를 따르세요.

kubectl

gdcloud CLI는 세션 비활성 상태가 되면 kubeconfig 파일을 만료합니다. 비활성 상태 후에 kubectl 명령어를 실행하려고 하면 승인 오류가 발생합니다.

error: You must be logged in to the server (Unauthorized)

다시 로그인하고 kubeconfig 파일을 사용하려면 로그인의 CLI 단계를 따르세요. 세션 제한 시간이 초과될 때마다 kubeconfig 파일을 재생성해야 합니다.

IAM 허용 정책 설정

사전 정의된 역할 설명

애플리케이션 운영자 (AO)는 플랫폼 관리자 (PA) 조직 내 개발팀의 구성원입니다. AO는 프로젝트 수준 리소스와 상호작용합니다. 팀 구성원에게 다음과 같은 사전 정의된 역할을 할당할 수 있습니다.

  • 프로젝트 IAM 관리자: 프로젝트의 IAM 허용 정책을 관리합니다.
  • AI OCR 개발자: 광학 문자 인식 서비스에 액세스하여 이미지의 텍스트를 감지합니다.
  • AI Speech Developer: Speech-to-Text 서비스에 액세스하여 음성을 인식하고 오디오를 스크립트로 변환합니다.
  • AI 번역 개발자: Vertex AI Translation 서비스에 액세스하여 텍스트를 번역합니다.
  • 아티팩트 관리 관리자: 프로젝트 네임스페이스의 모든 Harbor 프로젝트에 있는 리소스에 대한 관리 액세스 권한이 있습니다.
  • 아티팩트 관리 편집자: 프로젝트 네임스페이스의 모든 Harbor 프로젝트에 있는 리소스에 대한 읽기 및 쓰기 액세스 권한이 있습니다.
  • Certificate Authority Service 관리자: 프로젝트에서 인증 기관 및 인증서 요청을 관리할 수 있습니다.
  • 인증서 서비스 관리자: 프로젝트에서 인증서 및 인증서 발급자를 관리할 수 있습니다.
  • 대시보드 편집자: Dashboard 맞춤 리소스에 대한 읽기 및 쓰기 액세스 권한이 있습니다.
  • 대시보드 뷰어: Dashboard 커스텀 리소스에 대한 읽기 전용 액세스 권한이 있습니다.
  • Harbor 인스턴스 관리자: 프로젝트에서 Harbor 인스턴스를 관리할 수 있는 전체 액세스 권한이 있습니다.
  • Harbor 인스턴스 뷰어: 프로젝트에서 Harbor 인스턴스를 볼 수 있는 읽기 전용 액세스 권한이 있습니다.
  • Harbor 프로젝트 생성자: Harbor 인스턴스 프로젝트를 관리할 수 있는 액세스 권한이 있습니다.
  • K8s 네트워크 정책 관리자: Kubernetes 클러스터의 네트워크 정책을 관리합니다.
  • LoggingRule Creator: 프로젝트 네임스페이스에서 LoggingRule 커스텀 리소스를 만듭니다.
  • LoggingRule 편집기: 프로젝트 네임스페이스에서 LoggingRule 커스텀 리소스를 수정합니다.
  • LoggingRule 뷰어: 프로젝트 네임스페이스에서 LoggingRule 커스텀 리소스를 확인합니다.
  • LoggingTarget Creator: 프로젝트 네임스페이스에 LoggingTarget 커스텀 리소스를 만듭니다.
  • LoggingTarget 편집기: 프로젝트 네임스페이스에서 LoggingTarget 커스텀 리소스를 수정합니다.
  • LoggingTarget 뷰어: 프로젝트 네임스페이스에서 LoggingTarget 커스텀 리소스를 봅니다.
  • 부하 분산기 관리자: 프로젝트 네임스페이스의 모든 부하 분산기 리소스에 대한 읽기 및 쓰기 권한이 있습니다.
  • MonitoringRule 편집자: MonitoringRule 리소스에 대한 읽기 및 쓰기 액세스 권한이 있습니다.
  • MonitoringRule 뷰어: MonitoringRule 맞춤 리소스에 대한 읽기 전용 액세스 권한이 있습니다.
  • MonitoringTarget Editor: MonitoringTarget 맞춤 리소스에 대한 읽기 및 쓰기 액세스 권한이 있습니다.
  • MonitoringTarget 뷰어: MonitoringTarget 맞춤 리소스에 대한 읽기 전용 액세스 권한이 있습니다.
  • NAT 뷰어: Kubernetes 클러스터의 배포에 대한 읽기 전용 액세스 권한이 있습니다.
  • 네임스페이스 관리자: 프로젝트 네임스페이스 내의 모든 리소스를 관리합니다.
  • 관측 가능성 파이프라인 편집자: ObservabilityPipeine 맞춤 리소스에 대한 읽기 및 쓰기 액세스 권한이 있습니다.
  • 관측 가능성 파이프라인 뷰어: ObservabilityPipeline 맞춤 리소스에 대한 읽기 전용 액세스 권한이 있습니다.
  • 프로젝트 버킷 관리자: 버킷 내의 스토리지 버킷과 객체를 관리합니다.
  • 프로젝트 버킷 객체 관리자: 프로젝트 내 버킷에 대한 읽기 전용 액세스 권한과 해당 버킷의 객체에 대한 읽기-쓰기 액세스 권한이 있습니다.
  • 프로젝트 버킷 객체 뷰어: 프로젝트 내 버킷과 해당 버킷의 객체에 대한 읽기 전용 액세스 권한이 있습니다.
  • Project Cortex Alertmanager Editor: 프로젝트 네임스페이스에서 Cortex Alertmanager 인스턴스를 수정할 권한을 부여합니다.
  • Project Cortex Alertmanager Viewer: 프로젝트 네임스페이스의 Cortex Alertmanager 인스턴스에 액세스할 수 있는 권한을 부여합니다.
  • Project Cortex Prometheus Viewer: 프로젝트 네임스페이스의 Cortex Prometheus 인스턴스에 액세스할 수 있는 권한을 부여합니다.
  • 프로젝트 Grafana 뷰어: Fleet 관리 클러스터의 프로젝트 네임스페이스에 있는 Grafana 인스턴스에 액세스합니다.
  • 프로젝트 NetworkPolicy 관리자: 프로젝트 네임스페이스에서 프로젝트 네트워크 정책을 관리합니다.
  • 프로젝트 뷰어: 프로젝트 네임스페이스 내의 모든 리소스에 대한 읽기 전용 액세스 권한이 있습니다.
  • 프로젝트 VirtualMachine 관리자: 프로젝트 네임스페이스의 VM을 관리합니다.
  • 프로젝트 VirtualMachine 이미지 관리자: 프로젝트 네임스페이스의 VM 이미지를 관리합니다.
  • 보안 비밀 관리자: 프로젝트의 Kubernetes 보안 비밀을 관리합니다.
  • 보안 비밀 뷰어: 프로젝트의 Kubernetes 보안 비밀을 봅니다.
  • 서비스 구성 관리자: 프로젝트 네임스페이스 내의 서비스 구성에 대한 읽기 및 쓰기 액세스 권한이 있습니다.
  • 서비스 구성 뷰어: 프로젝트 네임스페이스 내의 서비스 구성에 대한 읽기 액세스 권한이 있습니다.
  • 볼륨 복제 관리자: 볼륨 복제 리소스를 관리합니다.
  • Workbench Notebooks 관리자: 프로젝트 네임스페이스 내의 모든 노트북 리소스에 대한 읽기 및 쓰기 액세스 권한을 얻습니다.
  • Workbench Notebooks 뷰어: 프로젝트 네임스페이스 내의 모든 노트북 리소스에 대한 읽기 전용 액세스 권한을 얻고 Vertex AI Workbench 사용자 인터페이스를 볼 수 있습니다.
  • 워크로드 뷰어: 프로젝트의 워크로드에 대한 읽기 액세스 권한이 있습니다.

일반적인 역할

다음 사전 정의된 일반 역할은 인증된 모든 사용자에게 적용됩니다.

  • AI Platform 뷰어: 사전 학습된 서비스를 볼 수 있는 권한을 부여합니다.
  • DNS 서픽스 뷰어: 도메인 이름 서비스 (DNS) 서픽스 구성 맵에 액세스합니다.
  • 흐름 로그 관리자: 모든 흐름 로그 리소스에 대한 읽기 및 쓰기 액세스 권한이 있습니다.
  • 흐름 로그 뷰어: 모든 흐름 로그 리소스에 대한 읽기 전용 액세스 권한이 있습니다.
  • 프로젝트 검색 뷰어: 인증된 모든 사용자가 프로젝트 보기에 대한 읽기 액세스 권한을 보유합니다.
  • 공개 이미지 뷰어: 네임스페이스 vm-images의 공개 VM 이미지에 대해 인증된 모든 사용자의 읽기 액세스 권한이 있습니다.
  • 시스템 아티팩트 레지스트리 anthos-creds 보안 비밀 모니터: anthos-creds 네임스페이스의 보안 비밀에 대한 읽기 전용 액세스 권한이 있습니다.
  • 시스템 Artifact Registry gpc-system 보안 비밀 모니터: gpc-system 네임스페이스의 보안 비밀에 대한 읽기 전용 액세스 권한이 있습니다.
  • 시스템 Artifact Registry harbor-system 보안 비밀 모니터: harbor-system 네임스페이스의 보안 비밀에 대한 읽기 전용 액세스 권한이 있습니다.
  • 가상 머신 유형 뷰어: 클러스터 범위 가상 머신 유형에 대한 읽기 액세스 권한이 있습니다.
  • VM 유형 뷰어: 관리자 클러스터의 사전 정의된 가상 머신 유형에 대한 읽기 액세스 권한이 있습니다.

역할 정의

이 섹션의 표에서는 다양한 사전 정의된 역할과 해당 권한을 설명합니다. 표에는 다음 열이 포함되어 있습니다.

  • 이름: 사용자 인터페이스 (UI)에 표시되는 역할의 이름입니다.
  • Kubernetes 리소스 이름: 해당 Kubernetes 커스텀 리소스의 이름입니다.
  • 수준: 이 역할의 범위가 조직인지 프로젝트인지 지정합니다.
  • 유형: 이 역할의 유형입니다. 예를 들어 가능한 값은 Role, ProjectRole, ClusterRole, ProjectClusterRole입니다.
  • 바인딩 유형: 이 역할에 적용해야 하는 바인딩 유형입니다.
  • 관리 API 서버 또는 Kubernetes 클러스터 권한: 이 역할에 부여된 관리 API 서버 또는 Kubernetes 클러스터 권한입니다. 예를 들어 가능한 값은 read, write, read and write 또는 not applicable (N/A)입니다.
  • 에스컬레이션 대상: 이 역할이 다른 역할로 에스컬레이션되는지 여부를 지정합니다.

AO 페르소나, 사전 정의된 ID, 액세스 역할

AO 페르소나
이름 Kubernetes 리소스 이름 초기 관리자 레벨 유형
프로젝트 IAM 관리자 project-iam-admin 프로젝트 Role
AI OCR 개발자 ai-ocr-developer 거짓 프로젝트 Role
AI Platform 뷰어 ai-platform-viewer 거짓 프로젝트 Role
AI 음성 개발자 ai-speech-developer 거짓 프로젝트 Role
AI 번역 개발자 ai-translation-developer 거짓 프로젝트 Role
아티팩트 관리 관리자 artifact-management-admin 거짓 프로젝트 Role
아티팩트 관리 편집자 artifact-management-editor 거짓 프로젝트 Role
Certificate Authority Service 관리자 certificate-authority-service-admin 거짓 프로젝트 Role
인증서 서비스 관리자 certificate-service-admin 거짓 프로젝트 Role
대시보드 편집기 dashboard-editor 거짓 프로젝트 Role
대시보드 뷰어 dashboard-viewer 거짓 프로젝트 Role
Harbor 인스턴스 관리자 harbor-instance-admin 거짓 프로젝트 Role
Harbor 인스턴스 뷰어 harbor-instance-viewer 거짓 프로젝트 Role
Harbor 프로젝트 생성자 harbor-project-creator 거짓 프로젝트 Role
K8s 네트워크 정책 관리자 k8s-networkpolicy-admin 거짓 프로젝트 ProjectRole
부하 분산기 관리자 load-balancer-admin 거짓 프로젝트 ProjectRole
LoggingRule Creator loggingrule-creator 거짓 프로젝트 Role
LoggingRule 편집기 loggingrule-editor 거짓 프로젝트 Role
LoggingRule Viewer loggingrule-viewer 거짓 프로젝트 Role
LoggingTarget Creator loggingtarget-creator 거짓 프로젝트 Role
LoggingTarget 편집기 loggingtarget-editor 거짓 프로젝트 Role
LoggingTarget 뷰어 loggingtarget-viewer 거짓 프로젝트 Role
MonitoringRule 편집자 monitoringrule-editor 거짓 프로젝트 Role
MonitoringRule 뷰어 monitoringrule-viewer 거짓 프로젝트 Role
MonitoringTarget 편집자 monitoringtarget-editor 거짓 프로젝트 Role
MonitoringTarget 뷰어 monitoringtarget-viewer 거짓 프로젝트 Role
네임스페이스 관리자 namespace-admin 거짓 프로젝트 ProjectRole
NAT 뷰어 nat-viewer 거짓 프로젝트 ProjectRole
ObservabilityPipeline 편집자 observabilitypipeline-editor 거짓 프로젝트 Role
ObservabilityPipeline 뷰어 observabilitypipeline-viewer 거짓 프로젝트 Role
프로젝트 버킷 관리자 project-bucket-admin 거짓 프로젝트 Role
프로젝트 버킷 객체 관리자 project-bucket-object-admin 거짓 프로젝트 Role
프로젝트 버킷 객체 뷰어 project-bucket-object-viewer 거짓 프로젝트 Role
Project Cortex Alertmanager 편집자 project-cortex-alertmanager-editor 거짓 프로젝트 Role
Project Cortex Alertmanager 뷰어 project-cortex-alertmanager-viewer 거짓 프로젝트 Role
Project Cortex Prometheus 뷰어 project-cortex-prometheus-viewer 거짓 프로젝트 Role
프로젝트 Grafana 뷰어 project-grafana-viewer 거짓 프로젝트 Role
프로젝트 NetworkPolicy 관리자 project-networkpolicy-admin 거짓 프로젝트 Role
프로젝트 뷰어 project-viewer 거짓 프로젝트 Role
프로젝트 VirtualMachine 관리자 project-vm-admin 거짓 프로젝트 Role
프로젝트 VirtualMachine 이미지 관리자 project-vm-image-admin 거짓 프로젝트 Role
Secret Admin secret-admin 거짓 프로젝트 Role
Secret Viewer secret-viewer 거짓 프로젝트 Role
서비스 구성 관리자 service-configuration-admin 거짓 프로젝트 Role
서비스 구성 뷰어 service-configuration-viewer 거짓 프로젝트 Role
Workbench Notebooks 관리자 workbench-notebooks-admin 거짓 프로젝트 Role
볼륨 복제 관리자 app-volume-replication-admin 거짓 클러스터 Role
Workbench Notebooks 뷰어 workbench-notebooks-viewer 거짓 프로젝트 Role
워크로드 뷰어 workload-viewer 거짓 프로젝트 Role

AO 페르소나, 사전 정의된 ID, 액세스 역할

AO 페르소나
이름 바인딩 유형 Management API 서버 권한 Kubernetes 클러스터 권한 에스컬레이션 대상
프로젝트 IAM 관리자 RoleBinding
  • RoleBinding, ClusterRoleBinding, Role, ClusterRole, ProjectRole, ProjectClusterRole, ProjectRoleBinding, ProjectClusterRoleBinding: 생성, 읽기, 업데이트, 삭제, 바인딩
  • ProjectServiceAccount: 생성, 읽기, 업데이트, 삭제
  • 프로젝트 네임스페이스 나열
해당 사항 없음 기타 모든 AO 역할
AI OCR 개발자 RoleBinding OCR 리소스: 읽기 및 쓰기 해당 사항 없음 해당 사항 없음
AI 음성 개발자 RoleBinding 음성 리소스: 읽기 및 쓰기 해당 사항 없음 해당 사항 없음
AI 번역 개발자 RoleBinding 번역 리소스: 읽기 및 쓰기 해당 사항 없음 해당 사항 없음
아티팩트 관리 관리자 RoleBinding HarborProjects: 관리, 생성, 읽기, 쓰기, 삭제, 보기 해당 사항 없음 해당 사항 없음
아티팩트 관리 편집자 RoleBinding HarborProjects: 읽기, 쓰기, 보기 해당 사항 없음 해당 사항 없음
Certificate Authority Service 관리자 RoleBinding 인증 기관 및 인증서 요청: 가져오기, 나열, 감시, 업데이트, 생성, 삭제, 패치 해당 사항 없음 해당 사항 없음
인증서 서비스 관리자 RoleBinding 인증서 및 인증서 발급자: 가져오기, 나열, 감시, 업데이트, 생성, 삭제, 패치 해당 사항 없음 해당 사항 없음
대시보드 편집기 RoleBinding Dashboard 맞춤 리소스: 가져오기, 읽기, 생성, 업데이트, 삭제, 패치 해당 사항 없음 해당 사항 없음
대시보드 뷰어 RoleBinding Dashboard: 가져오기 및 읽기 해당 사항 없음 해당 사항 없음
Harbor 인스턴스 관리자 RoleBinding Harbor 인스턴스: 생성, 읽기, 업데이트, 삭제, 패치 해당 사항 없음 해당 사항 없음
Harbor 인스턴스 뷰어 RoleBinding Harbor 인스턴스: 읽기 해당 사항 없음 해당 사항 없음
Harbor 프로젝트 생성자 RoleBinding Harbor 인스턴스 프로젝트: 만들기, 가져오기, 감시 해당 사항 없음 해당 사항 없음
K8s NetworkPolicy 관리자 ProjectRoleBinding 해당 사항 없음 NetworkPolicy 리소스: 생성, 읽기, 가져오기, 업데이트, 삭제, 패치 해당 사항 없음
부하 분산기 관리자 RoleBinding 해당 사항 없음
  • Backend: 가져오기, 보기, 나열하기, 만들기, 패치, 업데이트, 삭제
  • HealthCheck: 가져오기, 보기, 나열하기, 만들기, 패치, 업데이트, 삭제
  • BackendService: 가져오기, 보기, 나열하기, 만들기, 패치, 업데이트, 삭제
  • ForwardingRuleExternal: 가져오기, 보기, 나열하기, 만들기, 패치, 업데이트, 삭제
  • ForwardingRuleInternal: 가져오기, 보기, 나열하기, 만들기, 패치, 업데이트, 삭제
해당 사항 없음
LoggingRule Creator RoleBinding LoggingRule 커스텀 리소스: 생성, 읽기, 업데이트, 삭제, 패치 해당 사항 없음 해당 사항 없음
LoggingRule 편집기 RoleBinding LoggingRule 커스텀 리소스: 생성, 읽기, 업데이트, 삭제, 패치 해당 사항 없음 해당 사항 없음
LoggingRule Viewer RoleBinding LoggingRule 커스텀 리소스: 읽기 해당 사항 없음 해당 사항 없음
LoggingTarget Creator RoleBinding LoggingTarget 커스텀 리소스: 생성, 읽기, 업데이트, 삭제, 패치 해당 사항 없음 해당 사항 없음
LoggingTarget 편집기 RoleBinding LoggingTarget 커스텀 리소스: 생성, 읽기, 업데이트, 삭제, 패치 해당 사항 없음 해당 사항 없음
LoggingTarget 뷰어 RoleBinding LoggingTarget 커스텀 리소스: 읽기 해당 사항 없음 해당 사항 없음
MonitoringRule 편집자 RoleBinding MonitoringRule 커스텀 리소스: 생성, 읽기, 업데이트, 삭제, 패치 해당 사항 없음 해당 사항 없음
MonitoringRule 뷰어 RoleBinding MonitoringRule 커스텀 리소스: 읽기 해당 사항 없음 해당 사항 없음
MonitoringTarget 편집자 RoleBinding MonitoringTarget 커스텀 리소스: 생성, 읽기, 업데이트, 삭제, 패치 해당 사항 없음 해당 사항 없음
MonitoringTarget 뷰어 RoleBinding MonitoringTarget 커스텀 리소스: 읽기 해당 사항 없음 해당 사항 없음
네임스페이스 관리자 ProjectRoleBinding 해당 사항 없음 모든 리소스: 프로젝트 네임스페이스의 읽기 및 쓰기 액세스 권한 해당 사항 없음
NAT 뷰어 ProjectRoleBinding 해당 사항 없음 배포: 가져오기 및 읽기 해당 사항 없음
ObservabilityPipeline 편집자 RoleBinding ObservabilityPipeline 리소스: 가져오기, 읽기, 만들기, 업데이트, 삭제, 패치 해당 사항 없음 해당 사항 없음
ObservabilityPipeline 뷰어 RoleBinding ObservabilityPipeline 리소스: 가져오기 및 읽기 해당 사항 없음 해당 사항 없음
프로젝트 버킷 관리자 RoleBinding 버킷: 프로젝트 네임스페이스에서 읽기 및 쓰기 해당 사항 없음 해당 사항 없음
프로젝트 버킷 객체 관리자 RoleBinding
  • 버킷: 읽기
  • 객체: 읽기 및 쓰기
해당 사항 없음 해당 사항 없음
프로젝트 버킷 객체 뷰어 RoleBinding 버킷 및 객체: 읽기 해당 사항 없음 해당 사항 없음
Project Cortex Alertmanager 편집자 RoleBinding Cortex 시스템 및 Cortex Alertmanager: 읽기 및 쓰기 해당 사항 없음 해당 사항 없음
Project Cortex Alertmanager 뷰어 RoleBinding Cortex 시스템 및 Cortex Alertmanager: 읽기 해당 사항 없음 해당 사항 없음
Project Cortex Prometheus 뷰어 RoleBinding Cortex 시스템 및 Cortex Prometheus: 해당 사항 없음 해당 사항 없음
프로젝트 Grafana 뷰어 RoleBinding Grafana 시스템 및 Grafana: 읽기 및 쓰기 해당 사항 없음 해당 사항 없음
프로젝트 NetworkPolicy 관리자 RoleBinding 프로젝트 네트워크 정책: 프로젝트 네임스페이스에서 읽기 및 쓰기 해당 사항 없음 해당 사항 없음
프로젝트 뷰어 RoleBinding 프로젝트 네임스페이스의 모든 리소스: 읽기 해당 사항 없음 해당 사항 없음
프로젝트 VirtualMachine 관리자 RoleBinding
  • 가상 머신, 디스크, 액세스 요청, 외부 액세스, 백업 요청, 백업, 복원 요청, 백업 삭제 요청, 복원, 비밀번호 재설정 요청: 읽기, 생성, 업데이트, 삭제
  • 가상 머신 다시 시작:
  • 가상 머신 이미지, 백업 계획, 백업 계획 템플릿: 읽기
해당 사항 없음 해당 사항 없음
프로젝트 VirtualMachine 이미지 관리자 RoleBinding
  • VM 이미지: 읽기
  • VM 이미지 가져오기: 읽기 및 쓰기
해당 사항 없음 해당 사항 없음
Secret Admin RoleBinding Kubernetes 보안 비밀: 읽기, 만들기, 업데이트, 삭제, 패치 해당 사항 없음 해당 사항 없음
Secret Viewer RoleBinding Kubernetes 보안 비밀: 읽기 해당 사항 없음 해당 사항 없음
서비스 구성 관리자 RoleBinding ServiceConfigurations: 읽기 및 쓰기 해당 사항 없음 해당 사항 없음
서비스 구성 뷰어 RoleBinding ServiceConfigurations: 읽음 해당 사항 없음 해당 사항 없음
볼륨 복제 관리자 ClusterRoleBinding Volume failovers, volume relationship replicas: 만들기, 가져오기, 목록, 보기, 삭제 해당 사항 없음 해당 사항 없음
Workbench Notebooks 관리자 RoleBinding 해당 사항 없음
  • 프로젝트 네임스페이스의 노트북 커스텀 리소스 (CR): 생성, 읽기, 업데이트, 삭제
  • ClusterInfo 객체: 읽기
해당 사항 없음
Workbench Notebooks 뷰어 RoleBinding 해당 사항 없음
  • 프로젝트 네임스페이스의 노트북 커스텀 리소스 (CR): 읽기
해당 사항 없음
워크로드 뷰어 ProjectRoleBinding 해당 사항 없음
  • 프로젝트 네임스페이스의 포드 커스텀 리소스: 읽기
  • 프로젝트 네임스페이스의 배포 맞춤 리소스: 읽기
해당 사항 없음

일반적인 사전 정의된 ID 및 액세스 역할

일반적인 역할
이름 Kubernetes 리소스 이름 초기 관리자 레벨 유형
AI Platform 뷰어 ai-platform-viewer 거짓 프로젝트 Role
DNS 서픽스 뷰어 dnssuffix-viewer 거짓 조직 Role
흐름 로그 관리자 flowlog-admin 거짓 조직 ClusterRole
흐름 로그 뷰어 flowlog-viewer 거짓 프로젝트 ClusterRole
프로젝트 검색 뷰어 projectdiscovery-viewer 거짓 프로젝트 ClusterRole
공개 이미지 뷰어 public-image-viewer 거짓 조직 Role
시스템 Artifact Registry anthos-creds 보안 비밀 모니터 sar-anthos-creds-secret-monitor 거짓 조직 Role
시스템 Artifact Registry gpc-system secret 모니터 sar-gpc-system-secret-monitor 거짓 조직 Role
시스템 Artifact Registry harbor-system 보안 비밀 모니터 sar-harbor-system-secret-monitor 거짓 조직 Role
가상 머신 유형 뷰어 virtualmachinetype-viewer 거짓 조직 OrganizationRole
VM 유형 뷰어 vmtype-viewer 거짓 조직 Role

일반적인 사전 정의된 ID 및 액세스 역할

일반적인 역할
이름 바인딩 유형 관리자 클러스터 권한 Kubernetes 클러스터 권한 에스컬레이션 대상
AI Platform 뷰어 RoleBinding 사전 학습된 서비스: 읽기 해당 사항 없음 해당 사항 없음
DNS 서픽스 뷰어 ClusterRoleBinding DNS 서픽스 구성 맵: 읽기 해당 사항 없음 해당 사항 없음
흐름 로그 관리자 ClusterRoleBinding 흐름 로그 리소스: 가져오기 및 읽기 흐름 로그 리소스: 가져오기 및 읽기 해당 사항 없음
흐름 로그 뷰어 ClusterRoleBinding 흐름 로그 리소스: 생성, 가져오기, 읽기, 패치, 업데이트, 삭제 흐름 로그 리소스: 생성, 가져오기, 읽기, 패치, 업데이트, 삭제 해당 사항 없음
프로젝트 검색 뷰어 ClusterRoleBinding 프로젝트: 읽기 해당 사항 없음 해당 사항 없음
공개 이미지 뷰어 RoleBinding VM 이미지: 읽기 해당 사항 없음 해당 사항 없음
시스템 Artifact Registry anthos-creds 보안 비밀 모니터 RoleBinding anthos-creds 보안 비밀: 가져오기 및 읽기 anthos-creds 보안 비밀: 가져오기 및 읽기 해당 사항 없음
시스템 Artifact Registry gpc-system secret 모니터 RoleBinding gpc-system 보안 비밀: 가져오기 및 읽기 gpc-system 보안 비밀: 가져오기 및 읽기 해당 사항 없음
시스템 Artifact Registry harbor-system 보안 비밀 모니터 RoleBinding harbor-system 보안 비밀: 가져오기 및 읽기 harbor-system 보안 비밀: 가져오기 및 읽기 해당 사항 없음
가상 머신 유형 뷰어 OrganizationRoleBinding 해당 사항 없음 VM 유형: 읽기 해당 사항 없음
VM 유형 뷰어 ClusterRoleBinding VM 유형: 읽기 해당 사항 없음 해당 사항 없음

리소스에 대한 액세스 권한을 부여하는 방법에는 두 가지가 있습니다.

CLI를 사용하여 역할 바인딩 설정

관리자 클러스터의 AO 액세스

인프라 운영자 (IO) 및 플랫폼 관리자 (PA)와 달리 GDC는 애플리케이션 운영자 (AO)를 ClusterRoleBinding가 아닌 RoleBinding를 통해 Project에 바인딩합니다.

AO에 관리자 클러스터 액세스 권한을 부여하려면 다음 단계를 완료하세요.

  1. AO 액세스에 사용하는 이메일을 내보냅니다. 예를 들어 ao-alice@example.com과 같은 이메일입니다.

    export AO_EMAIL=AO_EMAIL
    
  2. iam-test 네임스페이스에서 ${AO_EMAIL} 프로젝트 IAM 관리자 액세스 권한을 부여하는 역할 바인딩을 만듭니다.

    kubectl create --kubeconfig PA_KUBECONFIG \
    rolebinding $AO_EMAIL-project-iam-admin \
    --role=project-iam-admin --user=$AO_EMAIL \
    --namespace=iam-test
    

    project-iam-admin 역할은 GDC의 사전 정의된 역할입니다. iam-test Kubernetes 네임스페이스는 관리자 클러스터의 iam-test 프로젝트에 해당합니다.

  3. AO 계정에 iam-test 네임스페이스에서 역할 바인딩을 만들 권한이 있는지 확인합니다.

    kubectl --kubeconfig AO_KUBECONFIG auth can-i create rolebinding -n iam-test
    

    다음과 같이 출력이 표시됩니다.

    yes
    
  4. bar 네임스페이스에서 ${AO_EMAIL} 프로젝트 뷰어 액세스 권한을 부여하는 역할 바인딩을 만듭니다.

    kubectl create --kubeconfig PA_KUBECONFIG \
    rolebinding $AO_EMAIL-project-viewer \
    --role=project-viewer --user=$AO_EMAIL \
    --namespace=bar
    

    project-viewer 역할은 GDC의 사전 설정된 역할입니다. bar Kubernetes 네임스페이스는 조직 관리자 클러스터의 bar 프로젝트에 해당합니다.

  5. AO 계정에 bar 네임스페이스에서 역할 바인딩을 만들 권한이 없는지 확인합니다.

    kubectl --kubeconfig AO_KUBECONFIG auth can-i create rolebinding -n bar
    

    다음과 같이 출력이 표시됩니다.

    no
    
  6. 선택사항: 역할 바인딩을 삭제하여 AO 계정에 부여된 권한을 취소합니다.

    kubectl --kubeconfig PA_KUBECONFIG delete rolebinding $AO_EMAIL-project-iam-admin -n iam-test
    

사용자 클러스터의 AO 액세스

AO는 ProjectRoleProjectRoleBinding 리소스를 사용하여 사용자 클러스터에 대한 네임스페이스 액세스 권한을 획득합니다. 하지만 PA는 사전 설정된 OrganizationRoleProjectRoleBinding 리소스를 사용하여 사용자 클러스터에서 AO 조직 전체 권한을 부여할 수 있습니다.

다음 단계에 따라 AO에게 사용자 클러스터에 대한 액세스 권한을 제공하세요.

사용자 클러스터에 대한 액세스 권한을 부여하려면 프로젝트 IAM 관리자 역할이 있어야 합니다.

  1. iam-test 네임스페이스의 모든 사용자 클러스터에서 ${AO_EMAIL} 네임스페이스 관리자 액세스 권한을 부여하는 ProjectRoleBinding 리소스를 만듭니다.

    kubectl --kubeconfig AO_KUBECONFIG apply -f - <<EOF
    apiVersion: resourcemanager.gdc.goog/v1
    kind: ProjectRoleBinding
    metadata:
      name: ${AO_EMAIL%@*}-namespace-admin
      namespace: iam-test
    spec:
      roleRef:
        apiGroup: resourcemanager.gdc.goog
        kind: ProjectRole
        name: namespace-admin
      subjects:
      - apiGroup: rbac.authorization.k8s.io
        kind: User
        name: ${AO_EMAIL}
    EOF
    
  2. CLI 및 kubectl로 로그인 섹션의 안내에 따라 사용자 클러스터의 사용자 인증 정보를 가져와 AO_USER_CLUSTER_KUBECONFIG 변수로 내보냅니다.

    export AO_USER_CLUSTER_KUBECONFIG=GENERATED_KUBECONFIG
    
  3. AO 계정에 iam-test 네임스페이스에서 배포를 만들 권한이 있는지 확인합니다.

    kubectl --kubeconfig ${AO_USER_CLUSTER_KUBECONFIG} auth can-i create deployment -n iam-test
    

    다음과 같이 출력이 표시됩니다.

    yes
    
  4. 선택사항: 테스트 AO 계정에 부여된 권한을 취소하려면 프로젝트 역할 바인딩을 삭제합니다.

    kubectl --kubeconfig ${AO_USER_CLUSTER_KUBECONFIG} delete projectrolebinding ${AO_EMAIL%@*}-namespace-admin -n iam-test
    

UI를 사용하여 프로젝트 전체 역할 바인딩 설정

애플리케이션 운영자는 프로젝트 리소스에 액세스할 수 있도록 다른 애플리케이션 운영자를 프로젝트에 추가합니다.

역할 바인딩을 설정하는 데 필요한 권한을 얻으려면 프로젝트 IAM 관리자에게 프로젝트 IAM 관리자 역할을 부여해 달라고 요청하세요.

다음 단계에 따라 역할 바인딩을 설정합니다.

  1. GDC 오프라인 어플라이언스 콘솔에 로그인합니다.
  2. 프로젝트를 선택합니다.
  3. 탐색 메뉴에서 액세스 관리를 클릭합니다.
  4. 구성원 추가를 클릭합니다.
  5. ID 공급업체 목록에서 ID 공급업체를 선택합니다.
  6. 개별 사용자 또는 그룹을 추가할지 선택합니다.
  7. 사용자 이름 또는 그룹 별칭 필드에 사용자 이름, 이메일 주소 또는 별칭을 입력합니다.
  8. 역할 목록에서 사용자 또는 그룹에 할당할 역할을 선택합니다(예: 프로젝트 뷰어).
  9. 추가를 클릭합니다.

UI를 사용하여 역할 바인딩 삭제

더 이상 액세스 권한이 필요하지 않으면 구성원과 연결된 역할, 권한, 액세스 권한을 삭제합니다.

다음 단계를 따라 회원을 삭제하세요.

  1. GDC 오프라인 어플라이언스 콘솔에 로그인합니다.
  2. 프로젝트를 선택합니다.
  3. 탐색 메뉴에서 액세스 관리를 클릭합니다.
  4. 승인된 구성원 목록에서 구성원을 선택합니다.
  5. 구성원 삭제를 클릭합니다.
  6. 메시지가 표시되면 구성원 삭제를 클릭하여 확인합니다.