7.7. 액세스 제어 설계
인증 체계를 결정한 후 해당 체계를 사용하여 디렉터리에 포함된 정보를 보호하는 방법을 결정합니다. 액세스 제어는 특정 클라이언트가 특정 정보에 액세스할 수 있도록 지정할 수 있지만 다른 클라이언트는 그렇지 않습니다.
액세스 제어를 정의하려면 하나 이상의 ACL(액세스 제어 목록 )을 사용합니다. 디렉터리 ACL은 읽기, 쓰기, 검색 및 비교와 같은 권한을 허용하거나 거부하는 일련의 ACI( 액세스 제어 정보 )로 구성됩니다.
ACL을 사용하면 디렉터리 트리의 모든 수준에서 권한을 설정할 수 있습니다.
- 전체 디렉터리
- 디렉터리의 특정 하위 트리
- 디렉터리의 특정 항목
- 특정 항목 특성 세트
- 지정된 LDAP 검색 필터와 일치하는 모든 항목
또한 특정 사용자에 대한 권한, 특정 그룹에 속하는 모든 사용자에 대해 또는 디렉터리의 모든 사용자에 대해 권한을 설정할 수 있습니다. IP 주소(IPv4 또는 IPv6) 또는 DNS 이름과 같은 네트워크 위치에 대한 액세스를 정의할 수 있습니다.
7.7.1. ACI 형식 정보
보안 정책을 설계할 때 디렉터리에 ACI가 표시되는 방법과 설정할 수 있는 권한을 이해해야 합니다.
Directory ACI는 다음과 같은 일반적인 형식을 사용합니다.
target permission bind_rule
ACI 변수에는 다음과 같은 설명이 있습니다.
- 대상
- 일반적으로 ACI가 대상으로 하는 하위 트리, 대상 특성 또는 둘 다 항목을 지정합니다. 대상은 ACI가 적용되는 디렉터리 요소를 식별합니다. ACI는 하나의 항목만 대상으로 지정할 수 있지만 여러 속성을 대상으로 지정할 수 있습니다. 또한 대상에 LDAP 검색 필터가 포함될 수 있습니다. 공통 특성 값이 포함된 널리 사용되는 항목에 대한 권한을 설정할 수 있습니다.
- 권한
- ACI가 설정한 실제 권한을 식별합니다. 권한 변수는 ACI가 지정된 대상에 대한 읽기 또는 검색과 같은 특정 유형의 디렉터리 액세스를 허용하거나 거부합니다.
- 바인딩 규칙
- 권한이 적용되는 바인딩 DN 또는 네트워크 위치를 식별합니다. 바인딩 규칙은 LDAP 필터를 지정할 수도 있으며 해당 필터가 바인딩 클라이언트 애플리케이션에 대해 true로 평가되면 ACI가 클라이언트 애플리케이션에 적용됩니다.
따라서 디렉터리 오브젝트 대상의 경우 ACI는 바인딩 규칙이 true인 경우 권한을 허용하거나 거부합니다.
권한 및 바인딩 규칙은 쌍으로 설정되며 모든 대상에 여러 권한 바인딩 규칙 쌍이 있을 수 있습니다. 지정된 대상에 대해 여러 액세스 제어를 효과적으로 설정할 수 있습니다. 예를 들면 다음과 같습니다.
target (permission bind_rule)(permission bind_rule) ...
추가 리소스
- ACI 형식에 대한 전체 설명은 액세스 제어 관리를참조하십시오.
7.7.1.1. 대상
ACI는 항목의 디렉터리 항목 및 속성을 대상으로 지정할 수 있습니다.
디렉터리 항목을 대상으로 지정하면 해당 항목과 권한 범위에 있는 모든 하위 항목이 포함됩니다. ACI에 대한 대상 항목을 명시적으로 정의하지 않으면 ACI가 ACI 문이 포함된 디렉터리 항목을 대상으로 합니다.If you do not explicitly define a target entry for the ACI, then the ACI targets to the directory entry that contains the ACI statement. ACI는 하나의 항목 또는 단일 LDAP 검색 필터와 일치하는 항목만 대상으로 지정할 수 있습니다.
대상 속성은 속성 값의 하위 집합에만 사용 권한을 적용합니다. 일련의 특성을 대상으로 지정하는 경우 ACI 대상 또는 ACI가 명시적으로 대상으로 하지 않는 속성을 지정합니다. 대상의 속성을 제외하면 오브젝트 클래스 구조가 허용하는 몇 가지 특성을 제외한 모든 속성에 대한 권한이 설정됩니다.
추가 리소스
7.7.1.2. 권한
권한은 액세스를 허용하거나 거부할 수 있습니다. 자세한 내용은 액세스 허용 또는 거부를참조하십시오.
권한은 디렉터리 서비스에서 수행되는 모든 작업이 될 수 있습니다.
권한 | 설명 |
---|---|
읽기 | 사용자가 디렉터리 데이터를 읽을 수 있는지 여부를 나타냅니다. |
쓰기 | 사용자가 디렉터리를 변경하거나 만들 수 있는지 여부를 나타냅니다. 또한 이 권한을 사용하면 사용자가 디렉터리 데이터를 삭제할 수 있지만 항목 자체는 삭제할 수 없습니다. 그러나 전체 항목을 삭제하려면 사용자에게 삭제 권한이 있어야 합니다. |
검색 | 사용자가 디렉터리 데이터를 검색할 수 있는지 여부를 나타냅니다. 읽기 권한의 읽기 권한과는 다릅니다. 이는 사용자가 검색 작업의 일부로 반환되는 경우 디렉터리 데이터를 볼 수 있다는 점에서 읽기 권한과 다릅니다.
예를 들어 일반 이름( |
비교 |
사용자가 데이터를 비교할 수 있는지 여부를 나타냅니다. 비교 권한은 검색할 수 있는 기능을 의미하지만 Directory Server는 검색 결과로 실제 디렉터리 정보를 반환하지 않습니다. 대신 Directory Server는 비교된 값이 일치하는지 여부를 나타내는 간단한 부울 값을 반환합니다. 디렉터리 인증 중에 |
자체 쓰기 | 그룹 관리에만 자체 쓰기 권한을 사용합니다. 이 권한을 사용하면 사용자가 그룹에 자신을 추가하거나 삭제할 수 있습니다. |
add | 사용자가 대상 항목 아래에 하위 항목을 만들 수 있는지 여부를 나타냅니다. |
delete | 사용자가 대상 항목을 삭제할 수 있는지 여부를 나타냅니다. |
proxy | 사용자가 Directory Manager를 제외한 다른 DN을 사용하여 이 DN의 권한이 있는 디렉터리에 액세스할 수 있음을 나타냅니다. |
7.7.1.3. 바인딩 규칙
바인딩 규칙은 ACI가 적용되는 바인딩 DN(사용자)을 정의합니다. 또한 날짜 또는 IP 주소와 같은 바인딩 특성을 지정할 수도 있습니다.
또한 바인딩 규칙은 ACI가 사용자 자체 항목에만 적용되도록 쉽게 정의합니다. 사용자는 사용자가 다른 사용자 항목을 업데이트할 위험을 실행하지 않고도 자신의 항목을 업데이트할 수 있습니다.
바인딩 규칙은 ACI가 적용되는 경우 다음 상황을 나타냅니다.
- 바인딩 작업이 특정 IP 주소(IPv4 또는 IPv6) 또는 DNS 호스트 이름에서 도달하는 경우. 이를 사용하여 지정된 시스템 또는 네트워크 도메인에서 모든 디렉터리 업데이트를 강제로 수행할 수 있습니다.
- 사용자가 anonymous를 바인딩하는 경우 익명 바인딩에 대한 권한 설정은 디렉터리에 바인딩하는 모든 사용자에게 권한이 적용됨을 의미합니다.
- 디렉터리에 성공적으로 바인딩하는 모든 사용자의 경우 익명 액세스를 방지하는 동안 일반 액세스를 허용하는 데 사용할 수 있습니다.
- 사용자가 항목의 즉시 상위로 바인딩된 경우
- 사용자가 특정 LDAP 검색 기준을 충족하는 경우
Directory Server는 바인딩 규칙에 대해 다음 키워드를 제공합니다.
- 상위
- 바인딩 DN이 즉시 상위 항목인 경우 바인딩 규칙이 true입니다. 디렉터리 항목이 즉시 하위 항목을 관리할 수 있는 특정 권한을 부여할 수 있습니다.
- 자체
- 바인딩 DN이 액세스를 요청하는 항목과 동일한 경우 바인딩 규칙이 true입니다. 개인이 자신의 항목을 업데이트할 수 있도록 특정 권한을 부여할 수 있습니다.
- All
- 바인딩 규칙은 디렉터리에 성공적으로 바인딩된 모든 사용자에게 적용됩니다.
- 모든 사람
- 바인딩 규칙은 모든 사람에게 적용됩니다. 익명 액세스를 허용하거나 거부하려면 이 키워드를 사용합니다.
7.7.2. 권한 설정
기본적으로 Directory Server는 Directory Manager를 제외하고 모든 사용자에 대한 액세스를 거부합니다. 결과적으로 사용자가 디렉터리에 액세스하려면 ACI를 설정해야 합니다.
7.7.2.1. 우선순위 규칙
사용자가 디렉터리 항목에 대한 모든 유형의 액세스를 시도하면 Directory Server는 디렉터리에 설정된 액세스 제어를 확인합니다. 액세스를 결정하기 위해 디렉터리 서버는 우선순위 규칙을 적용합니다. 이 규칙은 두 개의 충돌하는 권한이 있는 경우 액세스를 거부하는 권한은 항상 액세스 권한을 부여하는 권한보다 우선합니다.
예를 들어 디렉터리 서버가 디렉터리 루트 수준의 쓰기 권한을 거부하고 해당 권한이 디렉터리에 액세스하는 모든 사용자에게 적용되는 경우 쓰기 액세스를 허용할 수 있는 기타 권한에 관계없이 사용자는 디렉터리에 쓸 수 없습니다. 특정 사용자가 디렉터리에 대한 권한을 쓸 수 있도록 허용하려면 해당 사용자를 포함하지 않도록 원래의 deny-for-write의 범위를 설정해야 합니다. 그런 다음 사용자에 대한 추가 allow-for-write 권한을 설정해야 합니다.
7.7.2.2. 액세스 허용 또는 거부
디렉터리 트리에 대한 액세스를 허용하거나 거부할 수 있지만 액세스를 명시적으로 거부해야 합니다. 우선순위 규칙으로 인해 Directory Server에서 더 높은 수준의 디렉터리에서 액세스를 거부하는 규칙을 발견하면 액세스 권한을 부여할 수 있는 충돌하는 권한에 관계없이 더 낮은 수준에서 액세스를 거부합니다.
사용자 또는 클라이언트 애플리케이션의 가능한 최소 하위 집합만 포함하도록 허용 액세스 규칙의 범위를 제한합니다. 예를 들어 사용자가 디렉터리 항목의 모든 속성에 쓸 수 있도록 권한을 설정할 수 있지만 Directory Administrators 그룹의 멤버를 제외한 모든 사용자는 uid
속성에 쓰는 권한을 거부할 수 있습니다.
또는 다음과 같은 방법으로 쓰기 액세스를 허용하는 두 가지 액세스 규칙을 작성합니다.
-
uid
특성을 제외한 모든 속성에 대한 쓰기 권한을 허용하는 하나의 규칙을 생성합니다. 이 규칙은 모든 사람에게 적용되어야 합니다. -
uid
속성에 대한 쓰기 권한을 허용하는 하나의 규칙을 생성합니다. 이 규칙은 Directory Administrators 그룹의 멤버에게만 적용되어야 합니다.
허용 권한만 제공하면 명시적 거부 권한을 설정할 필요가 없습니다.
7.7.2.3. 액세스를 거부해야 하는 경우
명시적 거부 권한을 설정할 필요는 없지만 다음과 같은 경우에는 유용합니다.
복잡한 ACL 분배가 포함된 대규모 디렉터리 트리가 있습니다.
보안상의 이유로 Directory Server는 특정 사용자, 그룹 또는 물리적 위치에 대한 액세스를 갑자기 거부해야 할 수 있습니다. 기존 ACL을 신중하게 검사하여 허용 권한을 제한하는 방법을 이해하는 대신 분석을 수행할 시간이 있을 때까지 명시적 거부 권한을 일시적으로 설정합니다. ACL이 이러한 복잡성이 되면 거부 ACI는 향후 관리 오버헤드에만 비용을 추가합니다. 가능한 한 빨리 명시적 거부 권한을 방지하기 위해 ACL을 다시 작업한 다음 전체 액세스 제어 체계를 단순화합니다.
요일 또는 1시간에 따라 액세스 제어를 설정합니다.
예를 들어 Directory Server는 일요일 오후 11시부터 모든 쓰기 작업을 거부할 수 있습니다. (
2300
) - 월요일부터 오전 1:00. (0100
). 관리 관점에서 이 유형의 시간 기반 액세스를 명시적으로 제한하는 ACI를 관리하는 것이 모든 allow-for-write ACI에 대해 디렉토리를 통해 검색하고 이 시간 프레임에서 범위를 제한하는 것보다 더 쉽습니다.디렉터리 관리 권한을 여러 사용자에게 위임할 때 권한을 제한합니다.
사람 또는 사용자 그룹이 트리의 일부 측면을 수정하지 않고 디렉터리 트리의 일부를 관리할 수 있도록 허용하려면 명시적 거부 권한을 사용합니다.
예를 들어 메일 관리자가 공통 이름(
cn
) 속성에 대한 쓰기 액세스를 허용하지 않도록 하려면 공통 이름 속성에 대한 쓰기 액세스를 명시적으로 거부하는 ACI를 설정합니다.
7.7.2.4. 액세스 제어 규칙 배치 위치
디렉터리의 모든 항목에 액세스 제어 규칙을 추가할 수 있습니다. 관리자는 종종 오브젝트 클래스 domainComponent
,country
,organization
,organizationalUnit
,inetOrgPerson
또는 group
을 사용하여 항목에 액세스 제어 규칙을 추가합니다. ACL 관리를 단순화하기 위해 규칙을 가능한 한 그룹으로 구성합니다. 규칙은 대상 항목 및 해당 항목 모든 하위 항목에 적용됩니다. 따라서 디렉터리 또는 디렉터리 분기 지점의 루트 지점에 액세스 제어 규칙을 개인 등의 개별 리프 항목에 분산하지 않고 배치하는 것이 가장 좋습니다.
7.7.2.5. 필터링된 액세스 제어 규칙 사용
LDAP 검색 필터를 사용하여 정의된 기준 세트와 일치하는 디렉터리 항목에 대한 액세스를 설정할 수 있습니다. 예를 들어 Marketing
으로 설정된 organizationalUnit
속성이 포함된 모든 항목에 대해 읽기 액세스를 허용합니다.
필터링된 액세스 제어 규칙을 사용하면 사전 정의된 액세스 수준을 허용합니다. 예를 들어 디렉터리에는 홈 주소 및 전화 번호 정보가 포함되어 있습니다. 어떤 사람들은 이 정보를 공개하고 싶은 반면, 다른 사람들은 이 정보를 공개하고자 합니다.
다음과 같은 방법으로 액세스를 구성할 수 있습니다.
-
publish HomeContactInfo
라는 모든 사용자 디렉터리 항목에 속성을 추가합니다. -
publishhomeContactInfo
속성이 true로 설정된 항목에 대해서만home
Cryostat 및homePostalAddress
속성에 대한 읽기 액세스 권한을 부여하는 액세스 제어 규칙을 설정합니다. LDAP 검색 필터를 사용하여 이 규칙의 대상을 표현합니다. -
디렉터리 사용자가 자체
publish HomeContactInfo
속성 값을 true 또는 false로 변경할 수 있도록 허용합니다. 이러한 방식으로 디렉터리 사용자는 이 정보를 공개적으로 사용할 수 있는지 여부를 결정할 수 있습니다.
추가 리소스
7.7.3. ACI 보기: 유효한 권한 얻기
GER( Get effective rights )는 항목 내의 각 속성에 설정된 액세스 제어 권한을 반환하는 확장된 ldapsearch
명령입니다. 이 검색을 통해 LDAP 클라이언트는 서버 액세스 제어 구성으로 사용자가 수행할 수 있는 작업을 결정할 수 있습니다.
액세스 제어 정보는 두 개의 액세스 그룹, 즉 항목 권한 및 속성 권한으로 나뉩니다. 항목 권한은 해당 특정 항목으로 제한되는 수정 또는 삭제와 같은 권한입니다. 속성 권한은 디렉터리 전체의 해당 속성의 모든 인스턴스에 대한 액세스 권한입니다.
이러한 자세한 액세스 제어는 다음과 같은 상황에서 필요할 수 있습니다.
-
GER 명령을 사용하여 디렉터리에 대한 액세스 제어 지침을 보다 효과적으로 구성할 수 있습니다. 다른 그룹에 비해 한 사용자 그룹이 보거나 편집할 수 있는 항목을 제한해야 하는 경우가 많습니다. 예를 들어 Cryostat
관리자 그룹의 멤버는
및관리자
급여
와 같은 특성을 검색하고 읽을 수 있는 권한이 있을 수 있지만HR 그룹
멤버만 수정하거나 삭제할 수 있는 권한이 있습니다. 사용자 또는 그룹에 대한 효과적인 권한을 확인하는 것이 관리자가 적절한 액세스 제어를 설정하는지 확인하는 한 가지 방법입니다. -
GER 명령을 사용하여 개인 항목에서 보거나 수정할 수 있는 속성을 확인할 수 있습니다. 예를 들어 사용자는
homePostalAddress
및cn
과 같은 속성에 액세스할 수 있어야 하지만manager
및salary
속성에 대한 읽기 액세스 권한만 있을 수 있습니다.
7.7.4. ACI 사용: 일부 팁 및 팁
다음 팁은 디렉터리 보안 모델을 관리하고 디렉터리 성능 특성을 개선하는 데 도움이 될 수 있습니다.
디렉터리의 ACI 수를 최소화합니다.
Directory Server는 50,000개 이상의 ACI를 평가할 수 있지만 많은 ACI 문을 관리하기가 어렵습니다. 많은 ACI를 사용하면 사용자 관리자가 특정 클라이언트에서 사용할 수 있는 디렉터리 오브젝트를 즉시 확인할 수 있습니다.
Directory Server는 매크로를 사용하여 디렉터리의 ACI 수를 최소화합니다. 매크로를 사용하여 ACI 대상 또는 바인딩 규칙 또는 둘 다에서 DN 또는 해당 부분을 나타냅니다.
권한 균형을 허용 및 거부합니다.
기본 규칙은 액세스 권한이 특별히 부여되지 않은 모든 사용자에 대한 액세스를 거부하는 것이지만 하나의 ACI를 사용하여 트리의 루트에 가까운 액세스 권한과 리프 항목에 가까운 일부 거부 ACI를 사용하여 ACI 수를 줄이는 것이 좋습니다. 이 시나리오에서는 리프 항목에 가까운 여러 허용 ACI를 사용하지 않습니다.
ACI에서 가장 작은 속성 세트를 식별합니다.
속성 하위 집합에 대한 액세스를 허용하거나 거부할 때 가장 작은 목록이 허용되는 속성 세트 또는 거부되는 속성 집합인지 선택합니다. 그런 다음 가장 작은 목록만 관리해야 하므로 ACI를 설정합니다.
예를 들어
person
오브젝트 클래스는 많은 수의 특성을 포함합니다. 사용자가 몇 개의 속성만 업데이트할 수 있도록 하려면 해당 속성에 대한 쓰기 액세스 권한을 허용하는 ACI를 작성합니다. 그러나 사용자가 몇 가지 속성을 제외한 모든 속성을 업데이트할 수 있도록 하려면 이름이 몇 가지 특성을 제외한 모든 항목에 대한 쓰기 액세스를 허용하는 ACI를 만듭니다.LDAP 검색 필터를 신중하게 사용하십시오.
검색 필터는 액세스를 관리하는 오브젝트의 이름을 직접 지정하지 않습니다. 결과적으로 사용으로 예기치 않은 결과가 발생할 수 있습니다. 특히 디렉터리가 더 복잡해지면 더욱 복잡해집니다. ACI에서 검색 필터를 사용하기 전에 동일한 필터를 사용하여
ldapsearch
작업을 실행하여 결과를 지웁니다.디렉터리 트리의 다른 부분에서 ACI를 복제하지 마십시오.
겹치는 ACI를 보호합니다. 예를 들어 디렉터리 루트 지점에는
commonName
및givenName
속성에 대한 그룹 쓰기 액세스 권한이 있고commonName
속성에 대해 동일한 그룹 쓰기 액세스 권한을 허용하는 다른 ACI가 있는 경우 하나의 컨트롤만 그룹에 대한 쓰기 액세스 권한을 부여하도록 ACI를 업데이트하는 것이 좋습니다.디렉터리가 점점 복잡해지면 실수로 ACI가 중복될 위험이 빠르게 증가합니다. ACI가 겹치는 것을 방지하면 디렉터리에 포함된 총 ACI 수를 줄임으로써 보안 관리가 더 쉬워집니다.
이름 ACI.
ACI 이름을 지정하는 것은 선택 사항이지만 각 ACI에 짧고 의미 있는 이름을 지정하는 것은 보안 모델을 관리하는 데 도움이 됩니다.
디렉토리 내에서 ACI를 가능한 한 밀접하게 함께 그룹화합니다.
ACI 위치를 디렉터리 루트 지점 및 주요 디렉토리 분기 지점으로 제한하십시오. ACI 그룹화는 전체 ACI 목록을 관리하고 디렉터리에 있는 총 ACI 수를 최소로 유지하는 데 도움이 됩니다.
바인딩 DN이
cn=Joe
와 같지 않은 경우 쓰기 거부와 같은 이중 음수를 사용하지 마십시오.이 구문은 서버에 완벽하게 허용되지만 사람이 읽을 수 있는 것은 아닙니다.
추가 리소스
7.7.5. 루트 DN(Directory Manager)에 ACI 적용
일반적으로 액세스 제어 규칙은 Directory Manager 사용자에게 적용되지 않습니다. 디렉터리 관리자는 일반 사용자 데이터베이스가 아닌 dse.ldif
파일에 정의되어 있으며 ACI 대상에는 해당 사용자가 포함되지 않습니다.
디렉터리 관리자는 유지 관리 작업을 수행하고 사고에 응답하기 위해 높은 수준의 액세스 권한이 필요합니다. 그러나 디렉터리 관리자에 특정 수준의 액세스 제어 권한을 부여하여 권한이 없는 액세스 또는 공격이 root 사용자로 수행되지 않도록 할 수 있습니다.
RootDN 액세스 제어 플러그인을 사용하여 Directory Manager 사용자와 관련된 특정 액세스 제어 규칙을 설정합니다.
- 특정 요일 및 특정 시간 범위에서 액세스를 허용하거나 거부하는 시간 기반 액세스 제어입니다.
- 정의된 IP 주소, 서브넷 및 도메인의 액세스를 허용하거나 거부하는 IP 주소 규칙입니다.
- 특정 호스트, 도메인 및 하위 도메인의 액세스를 허용하거나 거부하는 호스트 액세스 규칙입니다.
Directory Manager에 대해 하나의 액세스 제어 규칙만 설정할 수 있습니다. 플러그인 항목에 있으며 전체 디렉터리에 적용됩니다.
Directory Manager 계정에 적절한 수준의 액세스 권한이 있는지 확인합니다. 이 관리 사용자는 시간외로 유지 관리 작업을 수행하거나 오류에 응답해야 할 수 있습니다. 이 경우 너무 제한적인 시간 또는 일 규칙을 설정하면 Directory Manager 사용자가 디렉터리를 효과적으로 관리하지 못할 수 있습니다.