익명의 사용자를 위해 대시보드를 임베딩할 때 사용자 기반 규칙과 함께 행 수준 보안(RLS)을 사용하여 데이터 세트 액세스 제한 - 아마존 QuickSight

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

익명의 사용자를 위해 대시보드를 임베딩할 때 사용자 기반 규칙과 함께 행 수준 보안(RLS)을 사용하여 데이터 세트 액세스 제한

 적용 대상: Enterprise Edition 
   대상 사용자: Amazon QuickSight 관리자 및 Amazon QuickSight 개발자 

에 프로비저닝 (등록) 되지 않은 사용자를 위해 Amazon QuickSight 대시보드를 애플리케이션에 내장하면 태그와 함께 행 수준 보안 (RLS) 을 사용할 수 있습니다. QuickSight 이 경우 태그를 사용하여 사용자가 누구인지에 따라 대시보드에서 볼 수 있는 데이터를 지정합니다.

예를 들어, 여러 소매업체를 위한 고객 대면 애플리케이션을 보유한 물류 회사를 예로 들어 보겠습니다. 이러한 소매업체의 수천 명의 사용자가 애플리케이션에 액세스하여 창고에서 주문이 배송되는 방식과 관련된 지표를 확인합니다.

수천 명의 사용자를 관리하고 싶지 않다면 익명 임베딩을 사용하여 인증된 사용자와 승인된 사용자가 볼 수 있는 선택된 대시보드를 애플리케이션에 내장합니다. QuickSight 하지만 소매업체에서는 자사 비즈니스용 데이터만 볼 수 있고 다른 업체는 볼 수 없도록 해야 합니다. 태그가 있는 RLS를 사용하여 고객이 자신과 관련된 데이터만 보게 할 수 있습니다.

이렇게 하려면 다음 단계를 완료합니다.

  1. 데이터세트에 RLS 태그를 추가하세요.

  2. GenerateEmbedUrlForAnonymousUser API 작업을 사용하여 런타임에 해당 태그에 값을 할당합니다.

    GenerateEmbedUrlForAnonymousUser API 작업을 사용하여 익명 사용자를 위한 대시보드를 내장하는 방법에 대한 자세한 내용은 익명 (미등록) 사용자를 위한 QuickSight 데이터 대시보드 내장 단원을 참조하세요.

RLS를 태그와 함께 사용하려면, 먼저 다음 사항에 유의하세요.

  • 태그와 함께 RLS를 사용하는 것은 현재 익명 임베딩, 특히 GenerateEmbedUrlForAnonymousUser API 작업을 사용하는 임베디드 대시보드에만 지원됩니다.

  • GenerateEmbedURLForRegisteredUser API 작업 또는 이전GetDashboardEmbedUrl API 작업을 사용하는 임베디드 대시보드에서는 태그가 포함된 RLS를 사용할 수 없습니다.

  • RLS 태그는 AWS Identity and Access Management (IAM) 또는 ID 유형에서는 지원되지 않습니다. QuickSight

  • SPICE 데이터 세트를 행 수준 보안에 적용할 경우, 데이터 세트의 각 필드에 최대 2,047개의 유니코드 문자를 포함할 수 있습니다. 이 할당량을 초과하는 필드는 수집 중에 잘립니다. SPICE 데이터 할당량에 대한 자세한 내용은 가져온 데이터에 대한 SPICE 할당량 섹션을 참조하세요.

1단계: 데이터 세트에 RLS 태그 추가

Amazon의 데이터세트에 태그 기반 규칙을 추가할 수 있습니다. QuickSight CreateDataSet 또는 UpdateDataSet API 작업을 호출하여 이러한 방식으로 태그 기반 규칙을 추가할 수도 있습니다. 자세한 설명은 API를 사용하여 데이터 세트에 RLS 태그 추가 섹션을 참조하세요.

다음 절차를 사용하여 의 데이터세트에 RLS 태그를 추가합니다. QuickSight

데이터 세트에 RLS 태그 추가
  1. QuickSight 시작 페이지에서 왼쪽의 데이터세트를 선택합니다.

  2. 데이터 세트 페이지에서 RLS를 추가할 데이터 세트를 선택합니다.

  3. 열리는 데이터 세트 세부 정보 페이지에서 행 수준 보안을 위해 설정을 선택합니다.

    데이터 세트 페이지에서 데이터 세트를 선택할 때의 행 수준 보안 옵션입니다.
  4. 열리는 행 수준 보안 설정 페이지에서 태그 기반 규칙을 선택합니다.

  5. 에서 태그 규칙을 추가할 열을 선택합니다.

    예를 들어, 물류 회사의 경우 retailer_id 열이 사용됩니다.

    문자열 데이터 유형의 열만 나열됩니다.

  6. 태그에는 태그 키를 입력합니다. 원하는 태그 이름을 입력할 수 있습니다.

    예를 들어, 물류 회사의 경우 태그 키 tag_retailer_id이 사용됩니다. 이렇게 하면 애플리케이션에 액세스하는 소매업체에 따라 행 수준 보안이 설정됩니다.

  7. (선택 사항) 구분 기호의 경우, 목록에서 구분 기호를 선택하거나 직접 입력합니다.

    태그에 둘 이상의 값을 할당할 때 구분 기호를 사용하여 텍스트 문자열을 구분할 수 있습니다. 구분 기호 값은 최대 10자까지 입력할 수 있습니다.

  8. (선택 사항) 모두 일치의 경우, *를 선택하거나 직접 문자를 입력합니다.

    이 옵션은 데이터 세트에서 해당 열의 모든 값을 기준으로 필터링하려는 경우 사용할 모든 문자일 수 있습니다. 값을 하나씩 나열하는 대신 문자를 사용할 수 있습니다. 이 값을 지정하는 경우 최소 1자 또는 최대 256자일 수 있습니다.

    태그 관리 표
  9. 추가를 선택합니다.

    태그 규칙이 데이터 세트에 추가되고 하단에 나열되지만, 아직 적용되지는 않았습니다. 데이터 세트에 다른 태그 규칙을 추가하려면, 5~9단계를 반복하세요. 태그 규칙을 수정하려면, 규칙 뒤에 있는 연필 아이콘을 선택하세요. 태그 규칙을 수정하려면, 규칙 뒤에 있는 아이콘을 선택하세요. 데이트 세트에 최대 50개의 태그를 추가할 수 있습니다.

  10. 데이터 세트에 태그 규칙을 적용할 준비가 되면, 규칙 적용을 선택합니다.

    태그 기반 규칙 대화 상자: 태그 기반 행 수준 보안을 위한 규칙 적용 버튼.
  11. 태그 기반 보안을 켤까요? 페이지가 열리면, 적용 및 활성화를 선택합니다.

    이제 태그 기반 규칙이 활성화되었습니다. 행 수준 보안 설정 페이지에서, 데이터 세트에 대한 태그 규칙을 켜거나 끌 수 있는 토글이 나타납니다.

    데이터 세트에 대한 모든 태그 기반 규칙을 끄려면 태그 기반 규칙 토글을 끈 다음 나타나는 텍스트 상자에 "확인"을 입력합니다.

    태그 기반 규칙 토글을 ON으로 설정하여 행 수준 보안을 설정합니다.

    데이터 세트 페이지에서, 데이터 세트 행에 태그 규칙이 활성화되었음을 나타내는 자물쇠 아이콘이 나타납니다.

    2단계: 런타임 시 RLS 태그에 값 할당에 설명된 대로 이제 태그 규칙을 사용하여 런타임에 태그 값을 설정할 수 있습니다. 규칙은 활성 상태일 때만 QuickSight 독자에게 영향을 미칩니다.

    중요

    데이터세트에 태그를 할당하고 활성화한 후에는 대시보드를 작성할 때 QuickSight 작성자에게 데이터세트의 모든 데이터를 볼 수 있는 권한을 부여해야 합니다.

    QuickSight 작성자에게 데이터세트의 데이터를 볼 수 있는 권한을 부여하려면 데이터세트 규칙으로 사용할 권한 파일 또는 쿼리를 만드세요. 자세한 설명은 행 수준 보안에 대한 데이터 세트 규칙 생성 섹션을 참조하세요.

태그 기반 규칙을 생성하면, 태그 기반 규칙이 서로 어떻게 관련되는지 보여주는 새 규칙 관리 표가 나타납니다. 규칙 관리 표에 나열된 규칙을 변경하려면 규칙 뒤에 있는 연필 아이콘을 선택합니다. 그런 다음 태그를 추가 또는 제거하고 업데이트를 선택합니다. 업데이트된 규칙을 데이터 세트에 적용하려면 적용을 선택합니다.

규칙 관리 테이블 수정 및 삭제 아이콘

(선택 사항) RLS 태그에 OR 조건 추가

또한 태그 기반 규칙에 OR 조건을 추가하여 계정 사용자에게 데이터가 표시되는 방식을 추가로 사용자 지정할 수 QuickSight 있습니다. 태그 기반 규칙과 함께 OR 조건을 사용하는 경우 규칙에 정의된 태그가 하나 이상 유효하면 시각적 개체가 QuickSight 나타납니다.

태그 기반 규칙에 OR 조건 추가
  1. 규칙 관리 테이블에서 OR 조건 추가를 선택합니다.

    태그 관리 대화 상자: OR 조건 추가 버튼.
  2. 나타나는 태그 선택 드롭다운 목록에서 OR 조건을 만들려는 태그를 선택합니다. 규칙 관리 테이블에 최대 50개의 OR 조건을 추가할 수 있습니다. 데이터 세트의 단일 열에 여러 태그를 추가할 수 있지만, 규칙에 열 태그가 하나 이상 포함되어야 합니다.

    OR 조건에 적용할 태그를 선택합니다.
  3. 업데이트를 선택하여 규칙에 조건을 추가한 다음 적용을 선택하여 업데이트된 규칙을 데이터 세트에 적용합니다.

    RLS 규칙 및 적용 버튼을 사용하여 규칙 관리 대화 상자를 관리합니다.

API를 사용하여 데이터 세트에 RLS 태그 추가

또는CreateDataSet 또는 UpdateDataSet API 작업을 호출하여 데이터 세트에 태그 기반 행 수준 보안을 구성하고 활성화할 수도 있습니다. 다음 예제에서 방법을 알아보세요.

CreateDataSet

다음은 태그가 있는 RLS를 사용하는 데이터 세트를 만드는 예시입니다. 앞서 설명한 물류 회사의 시나리오를 가정합니다. 태그는 row-level-permission-tag-configuration 요소에 정의되어 있습니다. 태그는 데이터를 보호하려는 열에 정의됩니다. 이 선택적 요소에 대한 자세한 내용은 Amazon QuickSight API 참조를 참조하십시오 RowLevelPermissionTagConfiguration.

create-data-set --aws-account-id <value> --data-set-id <value> --name <value> --physical-table-map <value> [--logical-table-map <value>] --import-mode <value> [--column-groups <value>] [--field-folders <value>] [--permissions <value>] [--row-level-permission-data-set <value>] [--column-level-permission-rules <value>] [--tags <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>] [--row-level-permission-tag-configuration '{ "Status": "ENABLED", "TagRules": [ { "TagKey": "tag_retailer_id", "ColumnName": "retailer_id", "TagMultiValueDelimiter": ",", "MatchAllValue": "*" }, { "TagKey": "tag_role", "ColumnName": "role" } ], "TagRuleConfigurations": [ tag_retailer_id ], [ tag_role ] }' ]

이 예제의 태그는 요소의 TagRules 부분에 정의되어 있습니다. 이 예에서는 2개의 열을 기반으로 2개의 태그가 정의됩니다.

  • tag_retailer_id 태그 키는 retailer_id 열에 대해 정의합니다. 이 경우 물류회사는, 애플리케이션에 액세스하는 소매업체에 따라 행 수준 보안이 설정됩니다.

  • tag_role 태그 키는 role 열에 대해 정의합니다. 이 경우 물류 회사는, 특정 소매업체에서 애플리케이션에 액세스하는 사용자의 역할에 따라 행 수준 보안의 추가 계층이 설정됩니다. 한 예로 store_supervisor 또는 manager입니다.

각 태그에 대해 TagMultiValueDelimiterMatchAllValue을(를) 정의할 수 있습니다. 이들은 선택 사항입니다.

  • TagMultiValueDelimiter - 이 옵션은 런타임에 값을 전달할 때 값을 구분하는 데 사용할 모든 문자열일 수 있습니다. 값은 최대 10자입니다. 이 경우 쉼표가 구분 기호 값으로 사용됩니다.

  • MatchAllValue - 이 옵션은 데이터 세트에서 해당 열의 모든 값을 기준으로 필터링하려는 경우 사용할 모든 문자일 수 있습니다. 값을 하나씩 나열하는 대신 문자를 사용할 수 있습니다. 지정하는 경우, 이 값은 최소 1자 또는 최대 256자일 수 있습니다. 이 경우 모두 일치 값으로 별표가 사용됩니다.

데이터 세트 열의 태그를 구성하는 동안 필수 속성 Status을(를) 사용하여 태그를 켜거나 끕니다. 태그 규칙을 활성화하려면 이 속성에 대해 ENABLED 값을 사용하세요. 태그 규칙을 켜서 2단계: 런타임 시 RLS 태그에 값 할당에 설명된 대로 런타임에 태그 값을 설정하는 데 사용할 수 있습니다.

다음은 이 응답 정의의 예입니다.

{ "Status": 201, "Arn": "arn:aws:quicksight:us-west-2:11112222333:dataset/RLS-Dataset", "DataSetId": "RLS-Dataset", "RequestId": "aa4f3c00-b937-4175-859a-543f250f8bb2" }
UpdateDataSet

UpdateDataSet

UpdateDataSet API 작업을 사용하여 기존 데이터 세트에 RLS 태그를 추가하거나 업데이트할 수 있습니다.

다음은 RLS 태그로 데이터 세트를 업데이트하는 예제입니다. 앞서 설명한 물류 회사의 시나리오를 가정합니다.

update-data-set --aws-account-id <value> --data-set-id <value> --name <value> --physical-table-map <value> [--logical-table-map <value>] --import-mode <value> [--column-groups <value> [--field-folders <value>] [--row-level-permission-data-set <value>] [--column-level-permission-rules <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>] [--row-level-permission-tag-configuration '{ "Status": "ENABLED", "TagRules": [ { "TagKey": "tag_retailer_id", "ColumnName": "retailer_id", "TagMultiValueDelimiter": ",", "MatchAllValue": "*" }, { "TagKey": "tag_role", "ColumnName": "role" } ], "TagRuleConfigurations": [ tag_retailer_id ], [ tag_role ] }' ]

다음은 이 응답 정의의 예입니다.

{ "Status": 201, "Arn": "arn:aws:quicksight:us-west-2:11112222333:dataset/RLS-Dataset", "DataSetId": "RLS-Dataset", "RequestId": "aa4f3c00-b937-4175-859a-543f250f8bb2" }
중요

데이터세트에 태그를 할당하고 활성화한 후에는 대시보드를 작성할 때 QuickSight 작성자에게 데이터세트의 모든 데이터를 볼 수 있는 권한을 부여해야 합니다.

QuickSight 작성자에게 데이터세트의 데이터를 볼 수 있는 권한을 부여하려면 데이터세트 규칙으로 사용할 권한 파일 또는 쿼리를 만드세요. 자세한 설명은 행 수준 보안에 대한 데이터 세트 규칙 생성 섹션을 참조하세요.

RowLevelPermissionTagConfiguration요소에 대한 자세한 내용은 Amazon QuickSight API 참조를 참조하십시오 RowLevelPermissionTagConfiguration.

2단계: 런타임 시 RLS 태그에 값 할당

RLS용 태그는 익명 임베딩에만 사용할 수 있습니다. GenerateEmbedUrlForAnonymousUser API 작업을 사용하여 태그 값을 설정할 수 있습니다.

다음 예시는 이전 단계에서 데이터 세트에 정의된 RLS 태그에 값을 할당하는 방법을 보여줍니다.

POST /accounts/AwsAccountId/embed-url/anonymous-user HTTP/1.1 Content-type: application/json { “AwsAccountId”: “string”, “SessionLifetimeInMinutes”: integer, “Namespace”: “string”, // The namespace to which the anonymous end user virtually belongs “SessionTags”: // Optional: Can be used for row-level security [ { “Key”: “tag_retailer_id”, “Value”: “West,Central,South” } { “Key”: “tag_role”, “Value”: “shift_manager” } ], “AuthorizedResourceArns”: [ “string” ], “ExperienceConfiguration”: { “Dashboard”: { “InitialDashboardId”: “string” // This is the initial dashboard ID the customer wants the user to land on. This ID goes in the output URL. } } }

다음은 이 응답 정의의 예입니다.

HTTP/1.1 Status Content-type: application/json { "EmbedUrl": "string", "RequestId": "string" }

사용자를 등록하지 않는 RLS 지원은 GenerateEmbedUrlForAnonymousUser API 작업에서만 지원됩니다. QuickSight 이 SessionTags 작업에서는, 데이터 세트 열과 관련된 태그의 값을 정의할 수 있습니다.

이 경우 다음과 같은 할당이 정의됩니다.

  • West, CentralSouth은 런타임 시 tag_retailer_id 태그에 할당됩니다. 쉼표는 데이터 세트의 TagMultipleValueDelimiter에 정의된 구분 기호로 사용됩니다. 열의 호출 값을 사용하려면, 값을 태그를 만들 때 MatchAllValue로 정의한 *로 설정하면 됩니다.

  • shift_manager 값은 tag_role 태그에 할당됩니다.

생성된 URL을 사용하는 사용자는 role 열에 shift_manager 값이 있는 행만 볼 수 있습니다. 해당 사용자는 retailer_id 열에 있는 West, Central, 또는 South 값만 볼 수 있습니다.

GenerateEmbedUrlForAnonymousUserAPI 작업을 사용하여 익명 사용자를 위한 대시보드를 내장하는 방법에 대한 자세한 내용은 또는 Amazon QuickSight API GenerateEmbedUrlForAnonymousUser참조서를 참조하십시오익명 (미등록) 사용자를 위한 QuickSight 데이터 대시보드 내장.