IAM 조건 추가

이 페이지는 ApigeeApigee Hybrid에 적용됩니다.

Identity and Access Management(IAM) 조건을 사용하면 API 허브 리소스를 포함하여 Google Cloud 리소스에 대한 조건부 액세스 제어를 정의하고 적용할 수 있습니다. IAM 조건에 대한 자세한 내용은 IAM 조건 개요를 참조하세요.

API 허브에서는 다음 IAM 리소스 조건 속성을 기반으로 조건부 액세스를 적용할 수 있습니다.

  • resource.service 조건 속성: 사용 중인 Google Cloud 서비스를 기반으로 조건부 액세스를 구성하는 데 사용합니다. 예를 들어 apihub.googleapis.com을 사용하는 리소스에 대한 사용자 액세스를 제한하는 조건을 설정할 수 있습니다. 지원되는 값 목록은 리소스 서비스 값을 참조하세요.
  • resource.type 조건 속성: 액세스하는 리소스의 유형을 기반으로 조건부 액세스를 구성하는 데 사용합니다. 예를 들어 apihub.googleapis.com/Api에 대한 사용자 액세스를 제한하는 조건을 설정할 수 있습니다. 지원되는 값 목록은 리소스 유형 값을 참조하세요.
  • resource.name 조건 속성: 리소스 이름의 전체 또는 일부를 기반으로 조건부 액세스를 구성하는 데 사용합니다. 지원되는 API 허브 이름 형식 목록은 리소스 이름 형식을 참조하세요.

IAM 조건 추가

기존 주 구성원(사용자, 그룹 또는 서비스 계정)에 IAM 조건을 추가하려면 다음 단계를 수행합니다.

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

    IAM으로 이동

  2. 프로젝트, 폴더 또는 조직을 선택합니다.
  3. 주 구성원 목록에서 IAM 조건을 추가할 주 구성원을 찾고 (주 구성원 수정)을 클릭합니다.

    액세스 수정 창이 나타납니다.

  4. IAM 조건을 추가할 역할을 찾고 + IAM 조건 추가를 클릭합니다.
  5. 조건 추가 창에서 다음 정보를 입력합니다.
    1. 제목: 역할에 추가할 조건의 이름을 입력합니다.
    2. 설명: (선택사항) 조건에 대한 설명을 입력합니다.
    3. 조건 작성 도구 또는 조건 편집기를 사용하여 조건을 추가할 수 있습니다.

      조건 작성 도구에서는 표현식에 원하는 조건 유형, 연산자, 기타 적용 가능한 세부정보를 선택할 수 있는 대화형 인터페이스를 제공합니다. 조건 편집기CEL 문법을 사용하여 조건 표현식을 수동으로 입력할 수 있는 텍스트 기반 인터페이스를 제공합니다.

      조건 작성 도구 또는 조건 편집기를 사용하는 방법에 대한 자세한 내용은 리소스 기반 액세스 구성을 참조하세요.

    4. 저장을 클릭하여 조건을 적용합니다.
  6. 액세스 수정 창에서 저장을 다시 클릭하여 주 구성원을 업데이트합니다.

API 허브용 IAM 조건 사용 예시

예 1: 리소스 이름 기반의 IAM 조건으로 시작하는 모든 API 리소스에 대한 액세스 제어

다음 조건 표현식은 액세스 제어를 다음과 같이 정의합니다.

  • 프리픽스로 시작하는 API 리소스에 액세스합니다. 여기에는 API 버전, 배포, 사양, 작업, 정의 등 모든 API 리소스에 대한 액세스가 포함됩니다.
  • 다른 API 허브 리소스에 기본 역할 기반 비조건부 액세스합니다.
  (
    resource.name.startsWith("projects/PROJECT_ID/locations/LOCATION/apis/API_ID_PREFIX") ||
    (
      resource.type != "apihub.googleapis.com/Api" &&
      resource.type != "apihub.googleapis.com/Version" &&
      resource.type != "apihub.googleapis.com/Spec" &&
      resource.type != "apihub.googleapis.com/ApiOperation" &&
      resource.type != "apihub.googleapis.com/Definition"
    )
  )

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
  • LOCATION: API 허브 위치입니다.
  • API_ID_PREFIX: API 리소스 이름의 프리픽스입니다.

예 2: 리소스 유형 기반의 IAM 조건을 사용하여 여러 API의 액세스 제어

다음 조건 표현식은 액세스 제어를 다음과 같이 정의합니다.

  • 프리픽스로 시작하는 API 허브 API 리소스에 액세스합니다.
  • 지정된 버전 ID로 시작하는 API 허브 버전 리소스에 액세스합니다.
  • 지정된 사양 ID로 시작하는 API 허브 사양 리소스에 액세스합니다.
  • 다른 API 허브 리소스에 기본 역할 기반 비조건부 액세스합니다.
  (
    resource.service == "apihub.googleapis.com" &&
    resource.type == "apihub.googleapis.com/Api" &&
    resource.name.startsWith("projects/PROJECT_ID/locations/LOCATION/apis/API1_ID_PREFIX")
  ) ||
  (
    resource.service == "apihub.googleapis.com" &&
    resource.type == "apihub.googleapis.com/Version" &&
    resource.name == "projects/PROJECT_ID/locations/LOCATION/apis/API2_ID/versions/API2_VERSION_ID"
  ) ||
  (
    resource.service == "apihub.googleapis.com" &&
    resource.type == "apihub.googleapis.com/Spec" &&
    resource.name == "projects/PROJECT_ID/locations/LOCATION/apis/API3_ID/versions/API3_VERSION_ID/specs/API3_SPEC_ID"
  ) ||
  (
    resource.type != "apihub.googleapis.com/Api" &&
    resource.type != "apihub.googleapis.com/Version" &&
    resource.type != "apihub.googleapis.com/Spec" &&
    resource.type != "apihub.googleapis.com/ApiOperation" &&
    resource.type != "apihub.googleapis.com/Definition"
  )
다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
  • LOCATION: API 허브 위치입니다.
  • API1_ID_PREFIX: 첫 번째 API 리소스 이름의 프리픽스입니다.
  • API2_ID: 두 번째 API 리소스의 ID입니다.
  • API2_VERSION_ID: 두 번째 API 버전 리소스의 ID입니다.
  • API3_ID: 세 번째 API 리소스의 ID입니다.
  • API3_VERSION_ID: 세 번째 API 버전 리소스의 ID입니다.
  • API3_SPEC_ID: 세 번째 API 사양 리소스의 ID입니다.