세분화된 RBAC(역할 기반 액세스 제어)는 세분화된 데이터 액세스 제어를 구현하는 Azure Monitor Log Analytics의 기능입니다.
역할, 부서 및 지리적 위치에 따라 로그에 대한 액세스를 제어하는 방법을 알아봅니다. 여기에는 HR 담당자를 직원 데이터로 제한하거나 국가 또는 부서별 로그에 대한 액세스 제한과 같은 시나리오가 포함됩니다.
이 예제 시나리오에서는 잘 알려진 Log Analytics 테이블 및 필드를 사용하여 행 수준 액세스를 적용합니다. 데이터는 디바이스 유형 및 UPN(사용자 계정 이름)과 같은 특성에 따라 분리됩니다.
세분화된 RBAC 개념에 대한 자세한 내용은 Azure Monitor의 RBAC(세분화된 역할 기반 액세스 제어)를 참조하세요.
필수 조건
이 시나리오를 완료하려면 다음 필수 구성 요소가 필요합니다.
- 테이블이 있는 Azure Monitor Log Analytics 작업 영역
- 사용자 지정 역할을 구성하고 역할 기반 액세스 제어 관리자 또는 사용자 액세스 관리자와 같은 조건을 가진 사용자 또는 그룹에 할당할 수 있는 권한을 부여하는 계정에 할당된 역할입니다.
시나리오 정의
이 시나리오에서 행 수준 액세스 제어는 Logs Analytics 작업 영역에서 CommonSecurityLog
테이블을 제한적인 방식으로, SigninLogs
및 DnsEvents
테이블을 허용적인 방식으로 제어합니다. 조건은 다음과 같이 연산자 그룹에 대해 설정됩니다.
- 네트워크 팀의 그룹 액세스를 설정하여 DeviceVendor 이름이 네트워크 방화벽과 일치하는
CommonSecurityLog
테이블에만 액세스할 수 있도록 합니다. 이 구성은 허용된 것 외에는 데이터에 대한 접근이 없는 전략을 사용합니다. - 계층 1 보안 분석가 팀에게 모든 테이블에 대한 액세스 권한을 부여하되,
SigninLogs
및DnsEvents
테이블은 CEO의 UPN 또는 컴퓨터 이름을 포함하는 레코드에는 액세스하지 못하도록 제한합니다. 이 구성은 허용되지 않는 전략을 제외한 모든 데이터에 대한 액세스를 사용합니다.
사용자 지정 역할 만들기
정의된 시나리오에 대한 사용자 지정 역할을 설정합니다. 네트워크 팀에 대해 하나를 만들고 다른 하나는 보안 팀을 위해 만듭니다. 역할 할당은 가산적이므로 세분화된 RBAC 조건보다 더 많은 권한을 부여하는 읽기 액세스를 할당하는 역할을 제거합니다. 자세한 내용은 세분화된 RBAC 역할 만들기 구성을 참조하세요.
- 필수 구성 요소인 Log Analytics 작업 영역이 포함된 리소스 그룹에서 액세스 제어(IAM)를 선택합니다.
- 사용자 지정 역할 추가를 선택합니다.
- 리소스 그룹 수준에서 다음 작업 및 데이터 작업을 사용하여 일반 데이터 액세스 역할을 만듭니다.
사용자 지정 역할 정의 | 세부 정보 |
---|---|
활동 | Microsoft.OperationalInsights/workspaces/read Microsoft.OperationalInsights/workspaces/query/read |
데이터 작업 | Microsoft.OperationalInsights/workspaces/tables/data/read |
이 이미지는 사용자 지정 역할 추가 페이지에 사용자 지정 역할 작업 및 데이터 작업이 표시되는 방식을 보여 줍니다.
- 사용자 지정 역할의 이름(예: )을 입력합니다.
Log Analytics Network Device team
- 사용자 지정 역할에 대해 2-4단계를 반복합니다
Log Analytics Security Analysts tier 1
. 역할 복제 옵션을 사용하고 역할을 기본으로 선택합니다Log Analytics Network Device team
.
사용자 지정 역할 할당
사용자 또는 그룹에 사용자 지정 역할을 할당합니다. 자세한 내용은 세분화된 RBAC 역할 할당을 참조하세요.
- Log Analytics 작업 영역에서 액세스 제어(IAM)를 선택합니다.
- 역할 할당 추가를 선택합니다.
-
Log Analytics Network Device team
만든 사용자 지정 역할을 선택한 다음, 다음을 선택합니다. - 역할을 할당할 사용자 또는 그룹을 선택한 다음, 다음을 선택합니다. 이 예제에서는 네트워크 팀 보안 그룹에 역할을 할당합니다.
- 조건>추가 작업>추가를 선택합니다.
- 작업 영역 데이터 데이터 읽기 작업을 >선택합니다.
완료 시 작업 부분의 모양은 다음과 같습니다.
제한 조건을 설정합니다.
첫 번째 사용자 지정 역할은 허용된 것 외에는 데이터에 접근할 수 없는 전략을 사용합니다. 이 사용 사례에서 네트워크 팀은 테이블에만 접근하면 되고, 장치 공급업체가 그들의 방화벽 솔루션과 일치하는 경우에만 레코드에 접근해야 합니다.
- 빌드 식 섹션에서 식 추가를 선택합니다.
- 특성 원본 드롭다운에서 리소스를 선택합니다.
- 특성 드롭다운에서 테이블 이름을 선택합니다.
- 연산자 드롭다운에서 StringEquals를 선택합니다.
-
CommonSecurityLog
필드에 입력 합니다. - 식 추가를 선택한 다음 And를 선택하여 다른 식을 추가합니다.
- 특성 원본 드롭다운에서 리소스를 선택합니다.
- 특성 드롭다운에서 열 값을 선택합니다.
-
DeviceVendor
에 를 입력하십시오. - 연산자 드롭다운에서 ForAnyOfAnyValues:StringLikeIgnoreCase를 선택합니다.
-
값 필드에
Check Point
및SonicWall
를 입력하세요. - 식 1과 2>를 선택하고 그룹을 그리고 라디오 단추가 선택된 상태에서 선택합니다.
- 저장을 선택합니다.
완료 시 제한 조건이 표시되는 방식은 다음과 같습니다.
제한 조건이 코드 형식으로 표시되는 방법은 다음과 같습니다.
(
(
!(ActionMatches{'Microsoft.OperationalInsights/workspaces/tables/data/read'})
)
OR
(
(
@Resource[Microsoft.OperationalInsights/workspaces/tables:name] StringEquals 'CommonSecurityLog'
AND
@Resource[Microsoft.OperationalInsights/workspaces/tables/record:DeviceVendor<$key_case_sensitive$>] ForAnyOfAnyValues:StringLikeIgnoreCase {'Check Point', 'SonicWall'}
)
)
)
조건에 따라 역할을 할당하는 프로그래밍 방식 방법에 대한 자세한 내용은 ABAC 조건 추가 또는 편집을 참조하세요.
유효 사용 권한이 적용되려면 최대 15분이 소요됩니다.
허용 조건 설정
두 번째 사용자 지정 역할은 허용되지 않는 전략을 제외하고 모든 데이터에 대한 액세스를 사용합니다. 이 사용 사례에서 계층 1 보안 분석가 팀은 모든 테이블에 액세스해야 하지만, CEO의 UPN 또는 컴퓨터 이름에 대한 레코드 액세스를 방지하기 위해 테이블 및 SigninLogs
테이블에 대한 액세스를 DnsEvents
제한합니다.
- 새 역할 할당을 추가한 다음 허용 식을 만듭니다. Log Analytics 작업 영역에서 액세스 제어(IAM)를 선택합니다.
- 역할 할당 추가를 선택합니다.
-
Log Analytics Security Analysts tier 1
만든 사용자 지정 역할을 선택한 다음, 다음을 선택합니다. - 역할을 할당할 사용자 또는 그룹을 선택한 다음, 다음을 선택합니다. 이 예제에서는 계층 1 분석가 보안 그룹에 역할을 할당합니다.
- 조건>추가 작업>추가를 선택합니다.
- 작업 영역 데이터 데이터 읽기 작업을 >선택합니다.
식 1
- 빌드 식 섹션에서 식 추가를 선택합니다.
- 특성 원본 드롭다운에서 리소스를 선택합니다.
- 특성 드롭다운에서 테이블 이름을 선택합니다.
- 연산자 드롭다운에서 ForAnyOfAllValues:StringNotEquals를 선택합니다.
-
SigninLogs
필드에DnsEvents
및 를 입력합니다. - Or 연산자가 식 1 뒤에 선택되어 있는지 확인합니다.
식 2
- 표현식 추가 선택
- 특성 원본 드롭다운에서 리소스를 선택합니다.
- 특성 드롭다운에서 테이블 이름을 선택합니다.
- 연산자 드롭다운에서 StringEquals를 선택합니다.
-
값 필드에
SigninLogs
를 입력합니다.
식 3
- 표현식 추가 선택
- 특성 원본 드롭다운에서 리소스를 선택합니다.
- 특성 드롭다운에서 열 값을 선택합니다.
-
UserPrincipalName
에 를 입력하십시오. - 연산자 드롭다운에서 StringNotEquals를 선택합니다.
-
CEO@contoso.com
필드에 입력 합니다. - 식 2 및 3>을 선택하고 And 라디오 버튼이 선택된 상태에서 그룹을 선택합니다.
식 4
- 표현식 추가 선택
- 특성 원본 드롭다운에서 리소스를 선택합니다.
- 특성 드롭다운에서 테이블 이름을 선택합니다.
- 연산자 드롭다운에서 StringEquals를 선택합니다.
-
값 필드에
DnsEvents
를 입력합니다.
식 5 - 시각적 편집기에서 제한은 5이지만 코드 편집기에서 더 많은 식을 추가할 수 있습니다.
- 표현식 추가 선택
- 특성 원본 드롭다운에서 리소스를 선택합니다.
- 특성 드롭다운에서 열 값을 선택합니다.
-
ComputerName
에 를 입력하십시오. - 연산자 드롭다운에서 StringNotEquals를 선택합니다.
-
CEOlaptop
필드에 입력 합니다. - 식 4과 5를> 선택하고 And 라디오 버튼이 선택된 그룹을 선택합니다.
- 저장을 선택합니다.
다음은 허용 조건이 완료될 때 표시되는 방식입니다. 식 추가 단추가 사용하지 않도록 설정되어 있는지 확인합니다. 식의 최대 수에 도달함에 따라 발생한 동작입니다.
허용되는 조건이 코드 형식으로 표시되는 방법은 다음과 같습니다.
(
(
!(ActionMatches{'Microsoft.OperationalInsights/workspaces/tables/data/read'})
)
OR
(
@Resource[Microsoft.OperationalInsights/workspaces/tables:name] ForAnyOfAllValues:StringNotEquals {'SigninLogs', 'DnsEvents'}
OR
(
@Resource[Microsoft.OperationalInsights/workspaces/tables:name] StringEquals 'SigninLogs'
AND
@Resource[Microsoft.OperationalInsights/workspaces/tables/record:UserPrincipalName<$key_case_sensitive$>] StringNotEquals 'CEO@contoso.com'
)
OR
(
@Resource[Microsoft.OperationalInsights/workspaces/tables:name] StringEquals 'DnsEvents'
AND
@Resource[Microsoft.OperationalInsights/workspaces/tables/record:Computer<$key_case_sensitive$>] StringNotEquals 'CEOlaptop1'
)
)
)
유효 사용 권한이 적용되려면 최대 15분이 소요됩니다.
문제 해결 및 모니터링
일반적인 ABAC 문제 해결은 Azure 역할 할당 조건 문제를 참조하세요.
역할 할당에 대한 변경 내용은 Azure 활동 로그에 기록됩니다.
LAQueryLogs 테이블은 열에서
ConditionalDataAccess
적용 가능한 ABAC 조건으로 사용자 쿼리가 실행되었는지 여부를 기록합니다. 자세한 내용은 LAQueryLogs 테이블 참조를 참조하세요.다음은
SigninLogs
테이블에 대해 구성된 조건을 트리거한 계층 1 보안 분석가에 의해 실행된 감사 쿼리의 예입니다.테이블 이름 및 열 값에 사용되는 값은 대/소문자를 구분합니다. 테이블 이름 또는 값이 잘못 지정되면 조건이 실패하거나 예기치 않은 동작이 발생할 수 있으며 요청된 데이터에 대한 액세스가 거부될 수 있습니다.
논리 오류가 발생하는 잘못된 조건은 영향을 받는 모든 사용자에 대해 "400 잘못된 요청" 오류 메시지를 트리거합니다. 관리자는 조건을 수정해야 합니다. 예를 들어 테이블에 없는 열을 사용하여 작업 영역 수준에서 조건을 설정하는 것이 있습니다.