Lake Formation 태그 기반 액세스 제어 - AWS Lake Formation

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Lake Formation 태그 기반 액세스 제어

Lake Formation 태그 기반 액세스 제어(LF-TBAC)는 속성을 기반으로 권한을 정의하는 권한 부여 전략입니다. Lake Formation에서는 이러한 속성을 LF 태그라고 합니다. 데이터 카탈로그 리소스에 LF-태그를 첨부하고 이러한 LF-태그를 사용하여 해당 리소스에 대한 Lake Formation 주도자에게 권한을 부여할 수 있습니다. Lake Formation은 보안 주체의 태그 값이 리소스 태그 값과 일치할 때 해당 리소스에 대한 작업을 허용합니다. LF-TBAC는 빠르게 성장하는 환경에서 유용하며 정책 관리가 번거로운 상황에 도움이 됩니다.

LF-TBAC는 데이터 카탈로그 리소스가 많을 때 Lake Formation 권한을 부여하는 데 사용되는 권장 방법입니다. LF-TBAC는 명명된 리소스 방법보다 확장성이 뛰어나며 필요한 권한 관리 오버헤드가 더 적습니다.

참고

IAM 태그는 LF 태그와 다릅니다. 이러한 태그는 서로 바꿔 사용할 수 없습니다. LF 태그는 Lake Formation 권한을 부여하는 데 사용되고 IAM 태그는 IAM 정책을 정의하는 데 사용됩니다.

Lake Formation 태그 기반 액세스 제어의 작동 방식

각 LF 태그는 department=sales 또는 classification=restricted와 같은 키-값 페어입니다. 키에는 정의된 여러 개의 값이 있을 수 있습니다(예: department=sales,marketing,engineering,finance).

LF-TBAC 방법을 사용하기 위해 데이터 레이크 관리자와 데이터 엔지니어는 다음 작업을 수행합니다.

작업 작업 세부 정보

1. LF 태그의 속성 및 관계를 정의합니다.

-

2. Lake Formation에서 LF 태그 생성자를 생성합니다.

LF 태그 생성자 추가

3. Lake Formation에서 LF 태그를 생성합니다.

LF 태그 생성

4. 데이터 카탈로그 리소스에 LF 태그를 할당합니다.

데이터 카탈로그 리소스에 LF 태그 할당

5. 필요한 경우 권한 부여 옵션을 사용하여 리소스에 LF 태그를 할당할 수 있는 권한을 다른 보안 주체에 부여합니다.

LF 태그 값 권한 관리

6. 필요한 경우 권한 부여 옵션을 사용하여 보안 주체에 LF 태그 표현식을 부여합니다.

LF-TBAC 메서드를 사용하여 데이터 레이크 권한 부여

7. (권장) LF-TBAC 방법을 통해 보안 주체가 올바른 리소스에 액세스할 수 있는지 확인한 후 명명된 리소스 방법을 사용하여 부여된 권한을 취소합니다.

-

데이터베이스 3개와 테이블 7개에 대한 권한을 3명의 보안 주체에 부여해야 하는 경우를 생각해 보세요.

왼쪽에는 3명의 사용자를 나타내는 그림이 세로로 배열되어 있습니다. 오른쪽에는 A, B, C라는 레이블이 지정된 3개의 데이터베이스가 세로로 배열되어 있습니다. 데이터베이스 A에는 A.1 및 A.2 레이블이 지정된 2개의 테이블이 있고, 데이터베이스 B에는 B.1 및 B.2 레이블이 지정된 2개의 테이블이, 데이터베이스 C에는 C.1, C.2 및 C.3 레이블이 지정된 3개의 테이블이 있습니다. 17개의 화살표는 사용자를 데이터베이스 및 테이블에 연결하여 데이터베이스 및 테이블에 대한 권한이 사용자에게 부여되었음을 나타냅니다.

명명된 리소스 방법을 사용하여 위 다이어그램에 표시된 권한을 얻으려면 다음과 같이 17번의 권한 부여 작업을 수행해야 합니다(의사 코드 기준).

GRANT CREATE_TABLE ON Database A TO PRINCIPAL 1 GRANT SELECT, INSERT ON Table A.1 TO PRINCIPAL 1 GRANT SELECT, INSERT ON Table A.2 TO PRINCIPAL 1 GRANT SELECT, INSERT ON Table B.2 TO PRINCIPAL 1 ... GRANT SELECT, INSERT ON Table A.2 TO PRINCIPAL 2 GRANT CREATE_TABLE ON Database B TO PRINCIPAL 2 ... GRANT SELECT, INSERT ON Table C.3 TO PRINCIPAL 3

이제 LF-TBAC를 사용하여 권한을 부여하는 방법을 생각해 보세요. 다음 다이어그램은 데이터베이스와 테이블에 LF 태그를 할당했고 보안 주체에 LF 태그에 대한 권한을 부여했음을 나타냅니다.

이 예제에서 LF 태그는 전사적 자원 관리(ERP) 애플리케이션 패키지의 다양한 모듈에 대한 분석이 포함된 데이터 레이크 영역을 나타냅니다. 다양한 모듈의 분석 데이터에 대한 액세스를 제어할 수 있습니다. 모든 LF 태그에는 module 키와 가능한 값 Sales, OrdersCustomers가 있습니다. 다음은 LF 태그의 예입니다.

module=Sales

이 다이어그램에는 LF 태그 값만 표시되어 있습니다.

이전 다이어그램과 마찬가지로 왼쪽에는 3명의 사용자 그림이 세로로 배열되어 있고 오른쪽에는 A, B, C라는 레이블이 지정된 3개의 데이터베이스가 세로로 배열되어 있습니다. 데이터베이스 A에는 A.1 및 A.2 레이블이 지정된 2개의 테이블이 있고, 데이터베이스 B에는 B.1 및 B.2 레이블이 지정된 2개의 테이블이, 데이터베이스 C에는 C.1, C.2 및 C.3 레이블이 지정된 3개의 테이블이 있습니다. 사용자와 데이터베이스 및 테이블 간에 화살표는 없습니다. 대신 사용자 옆의 '플래그'가 사용자 1에게는 LF 태그 Sales 및 Customers, 사용자 2에게는 LF 태그 Orders, 사용자 3에게는 LF 태그 Customers가 부여되었음을 나타냅니다. 데이터베이스 및 테이블 옆의 플래그는 데이터베이스와 테이블에 다음과 같은 LF 태그가 할당되었음을 나타냅니다. 데이터베이스 A: Sales. 테이블 A1: 흐리게 표시된 플래그는 Sales가 데이터베이스 A에서 상속되었음을 나타냅니다. 테이블 A2: Orders. 흐리게 표시된 플래그는 Sales가 데이터베이스 A에서 상속되었음을 나타냅니다. 데이터베이스 B: Orders. 테이블 B.1과 B.2는 Orders를 상속하고 테이블 B.2에는 Customers가 있습니다. 데이터베이스 C에는 Customers가 있고 테이블 C.1, C.2 및 C.3은 Customers를 상속합니다. C 테이블에는 다른 할당이 없습니다.
데이터 카탈로그 리소스에 대한 태그 할당 및 상속

테이블은 데이터베이스의 LF 태그를 상속하고 열은 테이블의 LF 태그를 상속합니다. 상속된 값은 재정의할 수 있습니다. 위 다이어그램에서는 흐리게 표시된 LF 태그가 상속됩니다.

상속으로 인해 데이터 레이크 관리자는 리소스에 다음과 같이 5번의 LF 태그 할당 작업만 수행하면 됩니다(의사 코드 기준).

ASSIGN TAGS module=Sales TO database A ASSIGN TAGS module=Orders TO table A.2 ASSIGN TAGS module=Orders TO database B ASSIGN TAGS module=Customers TO table B.2 ASSIGN TAGS module=Customers TO database C
보안 주체에 태그 권한 부여

데이터 레이크 관리자는 데이터베이스와 테이블에 LF 태그를 할당한 후 다음과 같이 보안 주체에 4번의 LF 태그 권한 부여 작업만 수행해야 합니다(의사 코드 기준).

GRANT TAGS module=Sales TO Principal 1 GRANT TAGS module=Customers TO Principal 1 GRANT TAGS module=Orders TO Principal 2 GRANT TAGS module=Customers TO Principal 3

이제 module=Sales LF 태그를 가진 보안 주체는 module=Sales LF 태그가 있는 데이터 카탈로그 리소스(예: 데이터베이스 A)에 액세스할 수 있고, module=Customers LF 태그를 가진 보안 주체는 module=Customers LF 태그가 있는 리소스에 액세스하는 등의 방식으로 액세스가 가능합니다.

앞의 권한 부여 명령은 불완전합니다. 이러한 명령은 LF 태그를 통해 보안 주체에게 권한이 있는 데이터 카탈로그 리소스를 나타내긴 하지만 보안 주체가 해당 리소스에 대해 정확히 어떤 Lake Formation 권한(예: SELECT. ALTER)을 가지고 있는지는 나타내지 않기 때문입니다. 따라서 다음 의사 코드 명령은 LF 태그를 통해 데이터 카탈로그 리소스에 대해 Lake Formation 권한이 부여되는 방식을 보다 정확하게 나타냅니다.

GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Sales TO Principal 1 GRANT (SELECT, INSERT ON TABLES) ON TAGS module=Sales TO Principal 1 GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Customers TO Principal 1 GRANT (SELECT, INSERT ON TABLES) ON TAGS module=Customers TO Principal 1 GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Orders TO Principal 2 GRANT (SELECT, INSERT ON TABLES) ON TAGS module=Orders TO Principal 2 GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Customers TO Principal 3 GRANT (SELECT, INSERT ON TABLES) ON TAGS module=Customers TO Principal 3
종합 - 리소스에 대한 결과적 권한

이전 다이어그램의 데이터베이스 및 테이블에 할당된 LF 태그와 다이어그램의 보안 주체에 부여된 LF 태그를 고려하여, 다음 테이블에는 보안 주체가 데이터베이스 및 테이블에 대해 가지고 있는 Lake Formation 권한이 나열되어 있습니다.

보안 주체 LF 태그를 통해 부여된 권한
보안 주체 1
  • 데이터베이스 A에 대해 CREATE_TABLE

  • 테이블 A.1에 대해 SELECT, INSERT

  • 테이블 B.2에 대해 SELECT, INSERT

  • 데이터베이스 C에 대해 CREATE_TABLE

  • 테이블 C.1에 대해 SELECT, INSERT

  • 테이블 C.2에 대해 SELECT, INSERT

  • 테이블 C.3에 대해 SELECT, INSERT

보안 주체 2
  • 테이블 A.2에 대해 SELECT, INSERT

  • 데이터베이스 B에 대해 CREATE_TABLE

  • 테이블 B.1에 대해 SELECT, INSERT

  • 테이블 B.2에 대해 SELECT, INSERT

보안 주체 3
  • 테이블 B.2에 대해 SELECT, INSERT

  • 데이터베이스 C에 대해 CREATE_TABLE

  • 테이블 C.1에 대해 SELECT, INSERT

  • 테이블 C.2에 대해 SELECT, INSERT

  • 테이블 C.3에 대해 SELECT, INSERT

맺음말

이 간단한 예제에서 데이터 레이크 관리자는 5번의 할당 작업과 8번의 권한 부여 작업을 사용하여 17개의 권한을 지정할 수 있었습니다. 수십 개의 데이터베이스와 수백 개의 테이블이 있는 경우 명명된 리소스 방법에 비해 LF-TBAC 방법이 가진 장점이 분명해집니다. 모든 보안 주체에 모든 리소스에 대한 액세스 권한을 부여해야 하는 경우를 가정하면 다음과 같습니다(여기서 n(P)는 보안 주체 수이고, n(R)은 리소스의 수임).

  • 명명된 리소스 방법의 경우 필요한 권한 부여 수는 n(P)n(R)입니다.

  • LF-TBAC 방법으로 단일 LF 태그를 사용할 경우 보안 주체에 대한 권한 부여 수와 리소스에 대한 할당 수의 합은 n(P) + n(R)입니다.