API7 Enterprise 3.2.14.4: 세밀한 권한 관리를 위한 Permission Boundary
August 15, 2024
API7 Enterprise v3.2.14.4가 공식 출시되었으며, 기업 내 더 세분화된 사용자 권한 관리 요구를 충족하기 위해 권한 경계(permission boundary) 기능이 도입되었습니다.
권한 경계란 무엇인가요?
권한 경계는 이름에서 알 수 있듯이, 사용자가 가질 수 있는 최대 권한 범위를 정의하는 권한의 벽과 같습니다. 이는 사용자나 역할이 시스템 내에서 수행할 수 있는 작업을 제한하는 데 사용됩니다. 주요 목적은 시스템 보안을 강화하고 권한의 오용을 방지하는 것입니다. 이 "벽"을 설정함으로써, 사용자가 자신의 책임 범위 내에서만 작업을 수행할 수 있고, 권한을 초과하여 시스템 내 데이터에 접근하거나 수정할 수 없도록 보장할 수 있습니다.
권한 경계는 시스템 내 기존 권한 정책을 재사용하거나, 특별히 새로운 권한 정책을 생성할 수 있습니다. 사용자에게 권한 경계가 할당되면, 이는 사용자의 권한을 제한하지만 직접적으로 어떠한 권한도 부여하지는 않습니다.
예시
모든 게이트웨이 그룹에 대한 서비스 운영 및 조회 권한을 부여하는 권한 정책을 생성하고, 이 정책을 사용자 Tom에게 권한 경계로 할당한다고 가정해 보겠습니다.
{
"statement": [
// 모든 게이트웨이 그룹에 대한 조회 권한
{
"effect": "allow",
"resources": [
"arn:api7:gateway:gatewaygroup/<.*>"
],
"actions": [
"<.*>Get<.*>"
]
},
// 모든 게이트웨이 그룹에 대한 서비스 운영 권한
{
"effect": "allow",
"resources": [
"*"
],
"actions": [
"arn:api7:gateway:gatewaygroup/<.*>/publishedservice/<.*>"
]
}
]
}
이러한 상황에서 Tom의 최대 권한은 이 권한 정책 내로 제한됩니다. 권한 경계가 설정되었다고 해서 Tom이 이미 이러한 권한을 가지고 있는 것은 아닙니다. 다음으로, Tom에게 다음과 같은 권한 정책을 가진 역할을 할당합니다.
{
"statement": [
// 모든 게이트웨이 그룹에 대한 조회 권한
{
"effect": "allow",
"resources": [
"arn:api7:gateway:gatewaygroup/<.*>"
],
"actions": [
"<.*>Get<.*>"
]
},
// 모든 게이트웨이 그룹에 대한 서비스 운영 권한
{
"effect": "allow",
"resources": [
"arn:api7:gateway:gatewaygroup/<.*>/publishedservice/<.*>"
],
"actions": [
"<.*>"
]
},
// 커스텀 플러그인에 대한 운영 권한
{
"effect": "allow",
"resources": [
"arn:api7:gateway:gatewaysetting/*"
],
"actions": [
"gateway:<.*>CustomPlugin<.*>"
]
}
]
}
Tom은 모든 게이트웨이 그룹에 대한 서비스 운영, 조회 및 커스텀 플러그인 운영 권한을 부여받았지만, 커스텀 플러그인을 편집할 수 있는 권한이 없음을 알게 됩니다. 이는 Tom에게 권한 경계를 설정했기 때문입니다. 권한 경계가 커스텀 플러그인 관련 권한을 포함하도록 조정되지 않는 한, 경계를 초과하는 추가 권한은 무효화됩니다.
권한 경계 기능 사용 방법
권한 정책 생성
권한 경계는 시스템 내 권한 정책을 직접 재사용할 수 있습니다. 사용자에게 권한 경계를 할당하기 전에 권한 정책을 생성해야 합니다. 시스템 조직 메뉴에서 "권한 정책"을 클릭하여 목록 페이지로 이동합니다.

그런 다음, 목록의 오른쪽 상단에 있는 "권한 정책 추가"를 클릭하여 생성 양식으로 이동합니다.
양식에 권한 정책의 기본 정보를 입력하고 해당 정책 문을 구성하여 권한 정책을 생성합니다. 이론적으로 동일한 권한 정책을 여러 역할과 연결하고 여러 사용자의 권한 경계로 사용할 수 있지만, 이러한 관행은 권장되지 않습니다.
권한 정책에 대한 더 많은 개념적 소개는 API7 Enterprise 3.4.14의 새로운 기능: 세분화된 접근 제어를 위한 IAM 문서를 참조하십시오. 일반적인 정책 구성 예시는 권한 정책 예시 문서를 참조하십시오. 리소스 및 액션의 가능한 값과 해당 API는 권한 정책 액션 및 리소스 문서를 참조하십시오.
권한 경계 할당
권한 정책을 생성한 후 권한 경계를 할당할 수 있습니다. 조직 메뉴에서 "사용자"를 클릭하여 사용자 목록 페이지로 이동합니다.

새 사용자를 초대할 때 직접 권한 경계를 할당할 수 있습니다. 초대 양식에는 권한 경계를 위한 새로운 필드가 포함되어 있으며, 사용자가 시스템에 로그인할 때 이 권한 경계가 기본적으로 할당됩니다.

기존 사용자의 경우, 사용자 상세 페이지에서 권한 경계의 편집 아이콘을 클릭하여 권한 경계를 구성할 수 있습니다.

사용자에게 권한을 구성할 때, 특정 작업 권한에 permission_boundaries
조건을 추가할 수 있습니다. 예를 들어, iam:InviteUser
(사용자 초대) 또는 iam:UpdateUserBoundary
(사용자 권한 경계 업데이트) 액션에서 permission_boundaries
조건을 추가하여 권한 제어를 더 세분화할 수 있습니다.
이 조건 하에서, 사용자에게 반드시 설정되어야 하는 권한 정책의 ID를 지정할 수 있습니다. 따라서 새 사용자를 초대하거나 다른 사용자의 권한 경계를 업데이트하는 작업을 수행할 때, 시스템은 이러한 사전 설정된 규칙에 따라 적절한 권한 경계를 강제로 할당합니다.
다음은 이를 달성하는 방법을 보여주는 예시입니다:
{
"statement": [
{
"effect": "allow",
"resources": ["arn:api7:iam:user/<.*>"],
"actions": [
"iam:InviteUser",
"iam:UpdateUserBoundary"
],
"conditions": {
"permission_boundaries": {
"type": "AllOfStrings",
"options": [
"d3698967-1d28-4e37-b5e7-ef00a93304cc",
"f863a233-f732-4af0-bb21-3fbe4013be69"
]
}
}
}
]
}
권한 경계 매핑
시스템 내에서 특정 권한 경계를 직접 구성하는 것 외에도, API7 Enterprise는 IdP(Identity Provider)에서 사용자의 신원과 권한에 따라 자동으로 해당 권한 경계를 할당하는 권한 경계 매핑을 지원합니다. 조직 설정 페이지에서 "로그인 옵션 추가"를 클릭합니다. 어떤 공급자를 선택하든, 구성 양식 하단에 "권한 경계 매핑" 스위치가 추가됩니다. 이를 활성화하면 권한 경계 매핑을 구성할 수 있습니다.
-
권한 정책: API7 Enterprise에서 정의된 권한 정책 리소스로, 사용자의 접근 및 작업 범위를 제어하는 데 사용됩니다. 권한 경계 매핑에서 외부 IdP의 구성을 이러한 권한 경계에 매핑하여 사용자가 로그인할 때 해당 권한 경계를 할당할 수 있습니다.
-
매핑된 권한 경계 속성: IdP가 반환한 사용자 권한 경계 정보의 식별자로, IdP의 응답에서 사용자 권한 경계 데이터를 찾는 데 사용됩니다. 예를 들어, "role" 또는 "groups"와 같은 속성 이름을 지정하면 시스템은 이 속성 이름을 기반으로 IdP의 응답에서 권한 경계 값을 추출합니다.
-
작업: IdP의 권한 경계 속성에서 권한 경계 값을 일치시키는 데 사용되는 방법입니다. 정확한 일치, 퍼지 일치, 배열 일치 등 다양한 방법이 지원됩니다. IdP가 권한 경계 값의 문자열 배열을 반환하는 경우, "배열 내 정확한 일치"를 선택하여 일치 항목을 찾을 수 있습니다.
-
매핑된 권한 경계 값: IdP에서 사용자의 권한 경계를 나타내는 특정 값입니다.
요약
전반적으로, 권한 경계는 시스템 보안을 보장하고 권한 남용을 방지하는 데 중요한 도구입니다. 사용자 권한의 범위를 명확히 정의함으로써, 주요 시스템 리소스가 무단 접근으로부터 보호되고 각 사용자가 자신의 권한 범위 내에서만 작업할 수 있도록 보장할 수 있습니다. 복잡한 시스템 환경에서 권한 경계를 효과적으로 활용하면 기업의 데이터 보안에 강력한 보호를 제공할 수 있습니다.