ClickCease 역할 기반 액세스 제어 | tuxcare.com

인기 뉴스레터 구독하기

4,500명 이상의 Linux 및 오픈소스 전문가와 함께하세요!

한 달에 두 번. 스팸이 없습니다.

자신도 모르게 사용하고 있는 개념: 역할 기반 액세스 제어

2021년 6월 16일 TuxCare 홍보팀

여러분도 모르는 사이에 매일 사용하고 있을 기술 개념과 기능에 대한 새로운 시리즈에 오신 것을 환영합니다. 이러한 개념이 일상 업무에 미치는 영향과 도구를 최대한 활용하는 방법에 대해 더 깊이 이해할 수 있도록 이 시리즈를 진행합니다.

첫 번째 글에서는 사용자에게 할당된 역할에 따라 애플리케이션 권한과 네트워크 리소스에 대한 액세스를 관리하는 데 일반적으로 사용되는 방법인 역할 기반 액세스 제어에 대해 설명합니다. 역할 기반 보안이라고도 하며 모든 시스템 관리자가 완전히 이해해야 하는 개념입니다.

역할 기반 액세스 제어란 무엇인가요?

역할 기반 액세스 제어는 수많은 사용자와 리소스에 걸쳐 점점 더 복잡해지는 액세스 제어 목록을 관리해야 할 필요성에서 발전했습니다. 한 걸음 물러나서 접근 제어에 대해 먼저 살펴봅시다.

액세스 제어가 필요한 이유

명백한 이유로 시스템 관리자는 시스템 사용자가 해당 시스템에서 작업을 수행할 수 있는 기능을 제한하고자 할 것입니다. 사용자라는 단어를 사용할 때는 사람 사용자뿐만 아니라 서비스 사용자 역할을 하는 애플리케이션을 모두 지칭합니다.

액세스 제어는 사용자와 시스템 사이의 계층 역할을 하여 시스템 관리자가 기능을 완전히 제한하지 않고도 제한을 설정할 수 있도록 합니다.

운영 체제 및 애플리케이션에 대한 액세스부터 내부 및 외부의 특정 네트워크에 대한 액세스에 이르기까지 다양한 시스템이 액세스 제어의 적용을 받습니다. 그리고 첫 번째 단계로, 접근 제어는 사용자가 애플리케이션, 시스템 또는 네트워크에 액세스할 수 있는지 또는 해당 사용자에게 액세스가 허용되지 않는지 여부를 알려줍니다.

액세스 제어는 또한 부여된 액세스 권한의 정도에 관한 것입니다. 즉, 한 사용자는 시스템에 대한 포괄적인 액세스 권한(예: 읽기 및 쓰기)을 가질 수 있는 반면, 다른 사용자는 제한된 액세스 권한(예: 읽기만 가능)을 가질 수 있습니다.

이러한 모든 우려는 운영 체제와 애플리케이션 공간에 걸쳐 있습니다. 여러 사용자를 지원하는 개별 애플리케이션은 어떤 사용자가 어떤 활동을 수행할 수 있는지에 대한 어떤 형태의 제어가 필요할 것입니다(그렇지 않으면 매우 빠르게 유용성을 잃게 될 것입니다).

고급 액세스 관리의 필요성

단순한 시스템에서는 어떤 사용자에게 어떤 유형의 액세스 권한이 있는지, 어디에 있는지 나열하는 간단한 액세스 제어 목록으로 충분합니다. 그러나 오늘날의 복잡한 엔터프라이즈 IT 환경에서는 특히 시스템의 통합된 특성과 한 곳의 권한이 다른 곳으로 전파되기 위해서는 다른 곳의 권한도 필요한 방식을 고려할 때 액세스 제어 기준의 긴 목록은 작동하지 않습니다.

RBAC의 핵심은 '그룹'이라고도 하는 '역할'이라는 개념을 도입하여 사용자로부터 권한을 분리하는 추상화 계층입니다. 이 작은 변화로 인해 유연성이 향상되고 권한을 세밀하게 제어할 수 있습니다. 어떤 면에서 역할 기반 액세스 제어는 관리 오버헤드를 추가하지만, 큰 그림에서 보면 RBAC는 특히 더 복잡한 환경에서 액세스 관리를 훨씬 더 간단하게 만듭니다.

역할이란 무엇인가요?

역할은 RBAC의 핵심입니다. 사용자와 마찬가지로 역할은 조직에서 개인의 역할과 해당 역할을 수행하는 데 필요한 시스템 권한을 나타낼 수 있습니다. 역할은 서버에서 실행되는 애플리케이션이나 서비스와 같은 무생물 개체에도 할당할 수 있습니다.

액세스 제어와 관련하여 특정 역할은 특정 권한 집합을 정의합니다. 예를 들어 '편집자'는 웹사이트의 글을 읽고 편집할 수 있지만 웹사이트 설정을 변경하거나 글을 삭제할 수 없으며, 이는 '관리자' 역할이 필요합니다.

시스템 관리자는 역할을 사용하여 업무를 수행하기 위해 특정 액세스 권한이 필요한 개인이 역할에 정의된 대로 설정된 템플릿에 따라 해당 권한을 갖도록 할 수 있습니다. 예를 들어, 새 편집자가 입사하면 시스템 관리자는 새 직원의 권한을 수동으로 구성할 필요 없이 표준 편집자 역할을 간단히 할당할 수 있습니다.

다른 관점에서 보면, 주니어 시스템 관리자를 포함한 주니어 직원은 회사 시스템에 대한 액세스 권한이 더 적을 수 있습니다. 주니어 직원은 회사 정보의 일부에만 액세스할 수 있고, 주니어 시스템 관리자는 시스템을 일부 변경할 수 있는 권한만 갖게 되지만 모든 권한을 갖게 되지는 않습니다.

또한 역할은 권한을 리소스와 연결합니다. 따라서 역할은 특정 권한을 특정 리소스에 연결할 수 있습니다. 예를 들어, 뉴욕 지사에서 근무하는 사람은 뉴욕 역할에 따라 뉴욕 지사와 관련된 클라우드 기반 리소스에 액세스할 수 있습니다. 같은 사람이 샌프란시스코에서 프로젝트에 참여하여 역할이 확장되지 않는 한 샌프란시스코의 리소스에 액세스할 수 없습니다.

역할은 놀랍도록 유연한 방식으로 사용할 수 있습니다. 예를 들어 역할 구성은 한 개인에게 여러 개의 역할이 할당되어 모든 역할에 대한 권한을 상속하는 것입니다. 역할 구성은 조직 내 복잡한 직책에 따라 사용자에게 역할이 할당되므로 매우 자연스럽게 이루어질 수 있습니다.

RBAC: 역할을 사용한 액세스 제어

따라서 약어에서 알 수 있듯이 RBAC는 사용자에게 할당된 역할 또는 실제로 여러 역할에 따라 액세스 제어를 적용합니다. 이는 표준 액세스 제어 목록을 개선한 것으로, 물론 RBAC는 액세스 제어를 위한 하나의 모델일 뿐입니다.

RBAC에서 발전한 속성 기반 액세스 제어(ABAC)라는 대안이 있습니다. ABAC는 주체(사용자)와 액세스하려는 리소스의 속성은 물론 필요한 작업과 요청이 이루어지는 환경을 포함한 몇 가지 다른 요소를 기반으로 액세스를 부여합니다.

시스템에서 RBAC를 사용하는지 확인하는 방법

여러 사용자를 지원하는 대부분의 애플리케이션에는 어떤 사용자가 어떤 작업을 수행할 수 있는지 지정할 수 있는 제어 기능이 있습니다. 애플리케이션이나 시스템이 그룹을 참조하고 사용자가 개별적으로 권한이 할당되지 않고 그룹에 추가되는 경우 해당 애플리케이션이나 시스템은 RBAC를 사용하는 것입니다. 기본적으로 그룹 및 역할과 같은 단어를 주의 깊게 살펴본다면 RBAC 기술을 사용하고 있을 가능성이 높습니다.

실제 역할 기반 액세스 제어의 예

역할 기반 액세스 제어는 매우 일반적입니다. 사용하기 쉽고 구현하기 쉬우며, OS 수준부터 일상적으로 사용하는 애플리케이션 및 서비스에 이르기까지 기술 솔루션에 내장되어 있습니다. 이 섹션에서는 RBAC의 몇 가지 일반적인 예를 살펴보겠습니다.

간단한 수준에서 콘텐츠 관리 시스템을 생각해 보세요. 여기서 사용자는 문서 작성 및 편집, 문서 삭제, 사이트 구조 편집 등 콘텐츠를 관리할 수 있어야 합니다. 예를 들어 작성자 역할에는 문서를 만들고 편집하는 기능은 포함될 수 있지만 문서를 삭제할 수는 없습니다.

편집자 역할이 있는 작업자는 문서를 편집하고 삭제할 수 있지만 사이트 구조를 수정할 수는 없습니다. 관리자 역할은 문서 작성, 편집, 삭제는 물론 사이트 구조 및 설정을 변경할 수 있는 모든 권한을 갖습니다.

RBAC는 일반적으로 데이터의 게이트키퍼로도 사용됩니다. 예를 들어, 특정 역할을 맡은 특정 의료진에게는 환자 데이터에 대한 액세스 권한이 부여되는 반면 다른 의료진은 데이터의 일부만 볼 수 있거나 자신이 상담 중인 환자의 데이터만 볼 수 있는 의료 데이터를 생각해 보세요.

기술 분야로 넘어가서, 일반적으로 사용되는 컨테이너화 솔루션인 Kubernetes는 RBAC를 사용하여 사용자와 애플리케이션 모두 개별 컨테이너 및 컨테이너 그룹에 적절한 수준의 액세스 권한을 갖도록 합니다.

또한 RBAC는 Microsoft의 Azure와 같은 클라우드 플랫폼에서 매우 중요한 역할을 수행하며, RBAC는 Azure 리소스 및 해당 리소스에서 실행되는 애플리케이션에 대한 액세스를 규제합니다.

RBAC 사용의 이점

단순한 ACL 대신 RBAC를 사용하려는 이유는 무엇인가요? 몇 가지 이점에 대해 힌트를 드렸지만, RBAC를 일반적인 권한 적용 방법으로 만드는 이점에 대해 자세히 살펴보겠습니다.

운영 효율성

ACL로 기술적으로 작업을 수행할 수 있지만, ACL은 빠르게 번거로워지고 결국에는 권한이 복잡해지면서 작동할 수 없게 됩니다. 그러나 간단한 워크로드에서도 사용자별로 규칙을 설정할 필요가 없기 때문에 RBAC가 권한 관리에 더 효과적입니다.

예를 들어, 모든 사용자가 특정 프린터로 인쇄할 수 있도록 허용하려면 ACL을 사용하면 개별 사용자마다 이 변경을 수행해야 합니다. RBAC를 사용하면 프린터를 관련 그룹에 추가하기만 하면 됩니다.

위의 예는 단순한 예일 뿐이며, 대규모의 복잡한 시스템에 RBAC를 배포할 경우 운영 효율성이 크게 향상됩니다. 실제로 대규모 조직은 RBAC 없이는 작동할 수 없으며, ACL에 의존하는 것은 불가능합니다.

다른 서비스와의 통합

사용자, 역할 및 권한 카탈로그가 있는 RBAC는 권한 데이터베이스 또는 디렉터리 서비스를 위한 플랫폼 역할도 할 수 있습니다. 즉, RBAC 기반 액세스 제어 시스템은 여러 서비스에 쉽게 통합할 수 있습니다.

즉, 역할과 사용자 권한을 하나씩 검색하거나 일괄적으로 내보내 완전히 별도의 시스템에 적용할 수도 있으므로 RBAC는 시스템 간에 통합할 수 있는 많은 기회를 제공합니다.

제어 및 규정 준수 개선

RBAC를 사용하는 경우 관리자는 권한을 더 세분화하고 더 자주 제어할 수 있습니다. 권한도 더 유연하게 관리할 수 있으므로 관리자가 권한을 더 엄격하게 제어할 수 있습니다.

특히 대규모 배포의 경우 시간이 지남에 따라 권한이 상당히 '느슨'해지거나 '과도'해질 수 있습니다. 따라서 RBAC는 액세스를 강화하여 조직의 규칙과 정책, 그리고 더 넓은 규정 준수 환경을 개선하는 데 도움이 됩니다. 규칙은 규정 준수 요구사항과 긴밀하게 연계될 수 있으며 규정이 변경될 경우 쉽게 변경할 수 있습니다.

감사 및 가시성

엔터프라이즈급 애플리케이션의 경우, RBAC는 관리자가 어떤 액세스가 누구에게, 누가, 언제 부여되었는지 파악하는 데 도움이 되도록 정교한 액세스 로그를 보관할 가능성이 높습니다.

시스템에 액세스하는 방법과 액세스하는 사용자에 대한 가시성을 훨씬 더 높일 수 있습니다. 또한 RBAC를 사용하는 솔루션은 시스템 관리자에게 어떤 사용자에게 어떤 유형의 권한이 있는지 명확하게 파악할 수 있는 보고서를 내보낼 수 있어야 합니다.

RBAC 사용의 단점

정보 기술의 모든 접근 방식과 마찬가지로 RBAC 사용에는 몇 가지 단점이 있습니다. 첫째, 사용자를 추가할 때 사용자에 대한 역할을 선택해야 하는 초기 '비용'이 있습니다. 하지만 향후 해당 사용자에 대한 역할 기반 권한을 쉽게 전파할 수 있다는 점을 고려하면 비교적 적은 비용으로 볼 수 있습니다. 이는 일반적으로 이미 구축된 비즈니스 명단 또는 중앙 집중식 ID 관리 서비스와의 통합을 통해 처리됩니다.

조직 내 점점 더 많은 역할을 수용하고 점점 더 복잡해지는 조직 내 역할을 설명하기 위해 점점 더 많은 역할이 생성됨에 따라 역할 폭발이라는 문제가 발생할 수 있습니다. 이로 인해 관리하기 어려운 엄청난 복잡성이 발생할 수 있습니다.

RBAC 역할 구조를 설정하는 데는 시간이 많이 걸리고 복잡할 수 있습니다. 또한 조직이 변화함에 따라 이 구조도 변경되므로 몇 년마다 역할 구조를 검토해야 할 수 있습니다.

이러한 이유로 일부 사람들은 ABAC을 매우 복잡한 액세스 및 권한 환경에 더 적합한 개선된 대안으로 보고 있습니다.

RBAC 설정

RBAC의 몇 가지 단점을 극복하는 한 가지 방법은 잘 구조화된 RBAC 구성으로 시작하는 것입니다. 다음은 그 과정에서 도움이 되는 몇 가지 팁입니다:

  • 철저한 목록 작성부터 시작하세요. 역할에 대해 생각하기 전에 어떤 시스템에 대해 권한을 설정하려고 하는지 정확히 파악하세요. 네트워크부터 조직의 다양한 데이터베이스까지 고려하세요. 액세스 제어 시스템을 설계하기 전에 무엇을 대상으로 액세스를 제어하려는지 파악하는 것이 중요합니다.
  • 인력을 분석하세요. 인력을 면밀히 검토하여 명확한 역할과 중복되는 역할을 파악하세요. 이 과정에서 권한 구조가 충분히 세분화되도록 충분한 역할을 만들되, 너무 많은 역할을 사용하여 RBAC의 이점을 무력화시키지 않도록 신중한 균형을 유지해야 합니다.
  • 동료들의 참여를 유도하세요. 다음으로, 이러한 책임을 역할과 일치시켜 일상적인 책임에 따라 직원의 액세스 권한을 설정하세요. 또한 동료들, 특히 기술 직군의 직원들이 RBAC의 기본 사항을 이해할 수 있도록 어느 정도의 교육을 실시하는 것도 좋습니다.
  • 변화에 대비한 관리. 변화하는 역할에 대처하는 것은 RBAC의 가장 어려운 측면 중 하나입니다. RBAC 시스템을 계획할 때는 향후 역할이 어떻게 변경될 수 있는지 계획하고, 구성한 역할과 권한이 실제와 일치하는지 정기적으로 감사를 수행해야 합니다.

본질적으로 약간의 미래 지향적 사고는 RBAC를 최대한 활용하고 향후 수행해야 하는 변경 및 유지 보수를 최소화하는 데 도움이 됩니다.

결론

RBAC는 애플리케이션과 시스템 전반에서 사용자와 권한을 관리할 수 있는 방법 중 하나입니다. 사용자 및 그룹, 규칙 및 정책 등 RBAC와 관련된 높은 수준의 개념은 기술 주제 전반을 아우릅니다.

이러한 각 교차 개념의 목적이 무엇인지, 그리고 이러한 개념이 IT 분야의 다른 영역에서 어떻게 작동하는지 이해하는 것이 좋습니다. IT 전문가로서 기본을 이해하면 더 복잡한 주제를 더 유능하게 처리하는 데 도움이 됩니다.

Kernel 재부팅, 시스템 다운타임 또는 예정된 유지 보수 기간 없이 취약성 패치를 자동화하고 싶으신가요?

TuxCare로 라이브 패치에 대해 알아보기

TuxCare 게스트 작가 되기

시작하기

메일

가입

4,500

Linux & 오픈 소스
전문가!


뉴스레터 구독하기