API7 Enterprise의 새로운 기능: 세밀한 접근 제어를 위한 IAM

Zhihuang Lin

Zhihuang Lin

July 11, 2024

Products

소개

이전 버전의 API7 Enterprise는 간단하고 사용자 친화적이며 포괄적인 RBAC(역할 기반 접근 제어) 관리 메커니즘을 제공했습니다. 이 메커니즘은 시스템 보안을 보장하면서 사용자에게 유연한 역할 권한 구성을 제공했습니다. API7 Enterprise의 리소스 유형과 기능이 증가함에 따라, 전통적인 RBAC 관리 방식은 세분화된 권한 제어에서 점차 한계를 드러냈습니다. 또한, 더 많은 기업들이 복잡하고 변화하는 비즈니스 요구를 충족시키기 위해 더 세밀한 권한 관리 전략을 요구하고 있습니다.

API7 Enterprise의 권한 관리 기능을 더욱 강화하기 위해, 기존의 역할 권한 시스템을 전면적으로 업그레이드하여 더 유연하고 강력한 IAM(Identity and Access Management) 정책 모델을 도입했습니다. 이 모델은 사용자에게 더 세밀한 권한 제어와 더 큰 유연성을 제공하여 현대 기업의 복잡하고 다양한 권한 관리 요구를 더 잘 충족시킵니다.

IAM 정책 모델이란?

IAM(Identity and Access Management) 정책 모델은 더 세밀하고 효율적인 권한 관리 방법을 나타냅니다. 이 모델은 관리자가 특정 정책을 정의할 수 있게 하며, 각 정책은 일련의 규칙(Statements)을 포함합니다. 이러한 규칙은 어떤 사용자나 역할이 어떤 리소스에 대해 어떤 작업을 수행할 수 있는지를 상세히 지정합니다. 전통적인 RBAC 메커니즘과 비교하여, 이 모델은 더 큰 유연성과 세분화를 제공합니다.

IAM, Identity and Access Management

IAM의 RBAC 대비 장점:

  • 세밀한 제어: IAM은 리소스 수준에서, 심지어 리소스 내의 특정 속성이나 작업에 대한 권한을 제어할 수 있는 반면, RBAC는 역할에 기반하여 권한을 할당하므로 상대적으로 거친 수준의 제어를 제공합니다.

  • 유연성: IAM은 관리자가 간접적인 권한 할당을 위해 수많은 역할을 생성하고 관리할 필요 없이 직접 정책과 권한을 관리할 수 있게 하여 구성이 더 직관적이고 유연합니다.

  • 확장성: 시스템 기능이 증가하고 리소스 유형이 다양해짐에 따라, IAM은 새로운 정책을 추가하여 새로운 권한 요구를 충족시키는 데 더 쉽게 적응할 수 있는 반면, RBAC는 변화에 적응하기 위해 수많은 역할을 조정하거나 추가해야 할 수 있습니다.

API7 Enterprise에서 IAM 정책을 사용하는 방법

1. 권한 정책 생성

API7 Enterprise에 로그인한 후, 오른쪽 상단의 "Organization" 버튼을 클릭하고 드롭다운 메뉴에서 "Permission Policies" 메뉴 항목을 선택합니다.

Permission Policies

Permission Policies 섹션에서 모든 정책을 관리할 수 있습니다. 기본적으로 초기 관리자를 위한 super-admin-permission-policy가 있습니다.

내장된 슈퍼 관리자 권한 정책

오른쪽 상단의 "Add Policy" 버튼을 클릭하여 정책 생성 폼으로 이동합니다. 여기서는 정책의 기본 정보를 입력하고 Policy Editor에서 권한을 구성해야 합니다. 이를 Statements라고 합니다.

Statements 편집

Statements는 정책의 핵심 구성 요소로, 하나 이상의 문장으로 구성됩니다. 각 문장은 특정 접근 권한 규칙을 정의합니다.

  • Effect: 문장의 효과를 지정하며, 일반적으로 "Allow" 또는 "Deny"입니다. 리소스는 여러 정책의 영향을 받을 수 있으며, IAM 시스템은 문장의 순서와 논리에 따라 최종 접근 권한을 결정합니다.

  • Action: 허용되거나 거부되는 일련의 작업을 정의합니다. 예를 들어 "gateway:DeleteGatewayGroup" 또는 "iam:GetUser"와 같은 작업이 있습니다. 이러한 작업은 리소스(Resource)와 함께 사용되어야 의미가 있습니다.

  • Resource: 문장이 적용되는 리소스를 지정합니다. 예를 들어 특정 게이트웨이 그룹이나 서비스가 있습니다. 와일드카드(예: <.*>)를 사용하여 여러 리소스를 일치시킬 수 있습니다.

  • Condition (선택 사항): 문장이 효과를 발휘할 조건을 정의합니다. 예를 들어,

    "conditions": {
          "gateway_group_label": {
            "type": "MatchLabel",
            "options": {
              "key": "type",
              "operator": "exact_match",
              "value": "production"
            }
          }
        },
    

    이는 게이트웨이 그룹 레이블이 "production"으로 설정된 경우에만 문장에 정의된 작업이 허용됨을 나타냅니다.

예를 들어, 특정 게이트웨이 그룹 내의 모든 게시된 서비스만 편집할 수 있도록 사용자를 제한하는 정책을 생성하려면 다음과 같이 작성할 수 있습니다:

{
  "statement": [
    {
      "resources": [
        "arn:api7:gateway:gatewaygroup/{gateway group id}"
      ],
      "actions": [
        "<.*>Get<.*>" // 'Get'으로 시작하는 모든 작업을 허용하며, 이는 지정된 게이트웨이 그룹에 대한 '읽기' 권한을 나타냅니다.
      ],
      "effect": "allow" // 위에서 정의한 작업을 허용합니다.
      // 참고: 이 정책 문장은 지정된 게이트웨이 그룹에 대해 모든 'Get' 작업(예: 게이트웨이 그룹 정보 조회, 게이트웨이 그룹 내 서비스 목록 조회 등)을 수행할 수 있도록 허용합니다.
    },
    {
      "resources": [
        "arn:api7:gateway:gatewaygroup/{gateway group id}/publishedservice/<.*>",
      ],
      "actions": [
        "<.*>" // 모든 작업을 허용합니다.
      ],
      "effect": "allow" // 위에서 정의한 작업을 허용합니다.
      // 이 정책 문장은 지정된 게이트웨이 그룹 내의 게시된 서비스에 대해 모든 작업(생성, 읽기, 업데이트, 삭제 등)을 수행할 수 있도록 허용합니다.
    }
  ]
}

이 예제에서는 두 세트의 리소스(게이트웨이 그룹 및 게이트웨이 그룹 내의 게시된 서비스)를 정의하고 각각에 대해 허용된 작업을 설정했습니다. 일반적인 정책 구성 예제는 권한 정책 예제 문서에서 확인할 수 있습니다. 리소스 및 작업의 사용 가능한 값과 해당 API는 권한 정책 작업 및 리소스 문서를 참조하십시오.

정책을 생성한 후에는 이를 직접 사용자에게 할당할 수 없습니다. 먼저 정책을 특정 역할에 할당해야 합니다.

2. 역할 생성 및 정책 연결

API7 Enterprise에 로그인한 후, 오른쪽 상단의 "Organization" 버튼을 클릭하고 드롭다운 메뉴에서 "Roles" 메뉴 항목을 선택합니다.

Roles

Roles 섹션에서 모든 역할을 관리할 수 있습니다. 기본적으로 내장된 관리자 역할인 Super Admin 역할이 있습니다.

내장된 슈퍼 관리자 역할

오른쪽 상단의 "Add Custom Role" 버튼을 클릭하여 역할 생성 폼으로 이동합니다. 여기서는 역할의 기본 정보를 입력합니다. 생성 후에는 역할 상세 페이지로 이동합니다.

사용자 정의 역할 추가

역할 상세 페이지에서 "Attach Policy" 버튼을 클릭하여 이전에 생성한 권한 정책을 역할에 할당합니다.

역할에 정책 연결

생성된 정책은 여러 역할에서 재사용할 수 있습니다. 역할이 여러 정책과 연결되면 이러한 정책은 기본적으로 결합됩니다. 즉, 역할의 권한은 연결된 모든 정책에서 선언된 권한의 합계입니다. 역할을 생성하고 정책을 연결한 후에는 특정 사용자에게 역할을 할당할 수 있습니다.

3. 사용자에게 역할 할당

API7 Enterprise에 로그인한 후, 오른쪽 상단의 "Organization" 버튼을 클릭하고 드롭다운 메뉴에서 "Users" 메뉴 항목을 선택합니다.

Users

Users 섹션에서 모든 사용자를 관리할 수 있습니다. 기본적으로 내장된 관리자인 admin 역할이 있습니다.

사용자 목록

역할 목록의 오른쪽 작업 열에서 **"Update Roles"**를 클릭하여 특정 사용자의 역할을 업데이트하는 폼 서랍을 엽니다.

사용자 역할 업데이트

사용자는 여러 역할을 가질 수 있습니다. 사용자에게 여러 역할이 부여되면 권한이 결합됩니다. 즉, 사용자는 모든 역할의 권한을 합한 권한을 가지게 됩니다.

간소화된 역할 매핑

사용자 역할 모델의 최적화와 업그레이드로, SSO 역할 매핑 프로세스가 간소화되었습니다. 이제 로그인 옵션의 역할 매핑을 구성할 때 각 역할에 대해 리소스 수준의 매칭 규칙을 개별적으로 설정할 필요가 없습니다. 리소스 및 작업 권한은 선택된 내장 역할에서 직접 상속되므로 권한 구성이 더 직관적이고 권한 관리의 복잡성이 줄어듭니다.

역할 매핑

요약

IAM 정책의 도입으로 더 유연한 권한 구성 및 관리가 가능해졌습니다. 이 조정은 시스템 보안을 강화할 뿐만 아니라 사용자에게 더 큰 맞춤화 가능성을 제공합니다.

앞으로 우리는 IAM 정책이 지원하는 리소스 유형을 계속 확장하여 모든 시스템 리소스가 세분화된 권한 관리에 포함될 수 있도록 하고, 정책 편집 및 관리 인터페이스를 지속적으로 최적화하여 사용자에게 더 포괄적이고 효율적인 권한 관리 경험을 제공할 것입니다.

Tags: