

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 管理 Amazon Redshift 資料共用中資料的許可
<a name="data-sharing-redshift"></a>

使用 AWS Lake Formation，您可以從 Amazon Redshift 安全地管理資料共用中的資料。Amazon Redshift 是 AWS 雲端中全受管的 PB 級資料倉儲服務。使用資料共用功能，Amazon Redshift 可協助您跨 共用資料 AWS 帳戶。如需 Amazon Redshift 資料共用的詳細資訊，請參閱 [Amazon Redshift 中的資料共用概觀](https://docs.aws.amazon.com/redshift/latest/dg/data_sharing_intro.html)。

在 Amazon Redshift 中，生產者叢集管理員會建立資料共用，並與資料湖管理員共用。如需建立資料湖管理員的step-by-step說明，請參閱 [建立資料湖管理員](initial-lf-config.md#create-data-lake-admin)。

在您 （資料湖管理員） 接受資料共用後，您必須為特定資料共用建立 AWS Glue Data Catalog 資料庫。這樣您就可以使用 Lake Formation 許可來控制對它的存取。Lake Formation 會將每個資料共用映射至對應的 Data Catalog 資料庫。這些會在 Data Catalog 中顯示為聯合資料庫。

當資料庫指向 Data Catalog 外部的實體時，稱為*聯合資料庫*。Amazon Redshift 資料共用中的資料表和檢視會列為資料目錄中的個別資料表。您可以與相同帳戶或 Lake Formation 的其他帳戶中選取的 IAM 主體和 SAML 使用者共用聯合資料庫。您也可以包含資料列和資料欄篩選條件表達式，以限制對特定資料的存取。如需詳細資訊，請參閱[Lake Formation 中的資料篩選和儲存格層級安全性](data-filtering.md)。

 若要讓使用者存取 Amazon Redshift 資料共用，您必須執行下列動作：

1. 更新 **Data Catalog 設定**以啟用 Lake Formation 許可。

1. 接受來自 Amazon Redshift 生產者叢集管理員的資料共用邀請，並在 Lake Formation 中註冊資料共用。

   完成此步驟後，您可以在 Lake Formation Data Catalog 中管理資料共用。

1. 建立聯合資料庫並定義該資料庫的許可。

1. 將許可授予資料庫和資料表上的使用者。您可以與相同帳戶或其他帳戶中的使用者共用整個資料庫或資料表的子集。

如需限制的詳細資訊，請參閱[Amazon Redshift 資料共用限制](notes-rs-datashare.md)。

**Topics**
+ [在 Amazon Redshift 資料共用上設定許可的先決條件](redshift-ds-prereqs.md)
+ [設定 Amazon Redshift 資料共用的許可](setup-ds-perms.md)
+ [查詢聯合資料庫](qerying-fed-db.md)

# 在 Amazon Redshift 資料共用上設定許可的先決條件
<a name="redshift-ds-prereqs"></a>

**更新預設 Data Catalog 設定**  
若要啟用 Data Catalog 資源的 Lake Formation 許可，建議您停用 Lake Formation 中的預設 **Data Catalog 設定**。如需詳細資訊，請參閱[變更預設許可模型或使用混合存取模式](initial-lf-config.md#setup-change-cat-settings)。

**更新許可**  
 除了資料湖管理員許可 (`AWSLakeFormationDataAdmin`) 之外，在 Lake Formation 中接受 Amazon Redshift 資料共用還需要下列許可：
+ `glue:PassConnection on aws:redshift`
+ `redshift:AssociateDataShareConsumer`
+ `redshift:DescribeDataSharesForConsumer`
+ `redshift:DescribeDataShares`

資料湖管理員 IAM 使用者隱含具有下列許可。
+ data\$1location\$1access
+ create\$1database 
+ lakefomation：registerResource

# 設定 Amazon Redshift 資料共用的許可
<a name="setup-ds-perms"></a>

 本主題說明您需要遵循的步驟，以接受資料共用邀請、建立聯合資料庫，以及授予許可。您可以使用 Lake Formation 主控台或 AWS Command Line Interface (AWS CLI)。本主題中的範例顯示相同帳戶中的生產者叢集、資料目錄和資料取用者。

若要進一步了解 Lake Formation 跨帳戶功能，請參閱 [Lake Formation 中的跨帳戶資料共用](cross-account-permissions.md)。

**設定資料共用的許可**

1. 檢閱資料共用邀請並接受它。

------
#### [ Console ]

   1.  以資料湖管理員身分登入 Lake Formation 主控台，網址為 https：//[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。導覽至**資料共用**頁面。

   1. 檢閱您獲授權存取的資料共用。**狀態**欄指出您目前的資料共用參與狀態。**待**定狀態表示您已新增至資料共用，但您尚未接受或拒絕邀請。

   1.  若要回應資料共用邀請，請選取資料共用名稱，然後選擇**檢閱邀請**。在**接受或拒絕資料共用**中，檢閱邀請詳細資訊。選擇**接受**以接受邀請**或拒絕**以拒絕邀請。如果您拒絕邀請，則無法存取資料共用。

------
#### [ AWS CLI ]

   下列範例示範如何檢視、接受和註冊邀請。以有效的 AWS 帳戶 ID 取代 AWS 帳戶 ID。將 取代`data-share-arn`為參考資料共用的實際 Amazon Resource Name (ARN)。

   1. 檢視待定邀請。

      ```
      aws redshift describe-data-shares \
       --data-share-arn 'arn:aws:redshift:us-east-1:111122223333:datashare:abcd1234-1234-ab12-cd34-1a2b3c4d5e6f/federatedds' \
      ```

   1. 接受資料共用。

      ```
       aws redshift associate-data-share-consumer \
       --data-share-arn 'arn:aws:redshift:us-east-1:111122223333:datashare:abcd1234-1234-ab12-cd34-1a2b3c4d5e6f/federatedds' \
       --consumer-arn 'arn:aws:glue:us-east-1:111122223333:catalog
      ```

   1. 在 Lake Formation 帳戶中註冊資料共用。使用 [RegisterResource](https://docs.aws.amazon.com/lake-formation/latest/APIReference/API_RegisterResource.html) API 操作在 Lake Formation 中註冊資料共用。 `DataShareArn`是 的輸入參數`ResourceArn`。
**注意**  
這是必要步驟。

      ```
      aws lakeformation register-resource \
       --resource-arn 'arn:aws:redshift:us-east-1:111122223333:datashare:abcd1234-1234-ab12-cd34-1a2b3c4d5e6f/federatedds'
      ```

------

1. 建立資料庫。

    接受資料共用邀請後，您需要建立指向與資料共用相關聯之 Amazon Redshift 資料庫的資料庫。您必須是資料湖管理員才能建立資料庫。

------
#### [ Console ]

   1.  從**邀請**窗格中選取資料共用，然後選擇**設定資料庫詳細資訊**。

   1.  在**設定資料庫詳細資訊**中，輸入資料共用的唯一名稱和識別符。您可以使用此識別符在中繼資料階層 (dbName.schema.table).

   1.  選擇**下一步**，將許可授予共用資料庫和資料表上的其他使用者。

------
#### [ AWS CLI ]

    使用下列範例程式碼建立資料庫，該資料庫指向使用 與 Lake Formation 共用的 Amazon Redshift 資料庫 AWS CLI。

   ```
   aws glue create-database --cli-input-json \
   
   '{
    "CatalogId": "111122223333",
    "DatabaseInput": {
     "Name": "tahoedb",
     "FederatedDatabase": {
          "Identifier": "arn:aws:redshift:us-east-1:111122223333:datashare:abcd1234-1234-ab12-cd34-1a2b3c4d5e6f/federatedds",
          "ConnectionName": "aws:redshift"
      }
    }
    }'
   ```

------

1. 授予許可。

    建立資料庫之後，您可以將許可授予帳戶中的使用者，或外部 AWS 帳戶 和組織。您將無法在映射至 Amazon Redshift 資料共用的聯合資料庫上授予寫入資料許可 （插入、刪除） 和中繼資料許可 （變更、捨棄、建立）。如需授予許可的詳細資訊，請參閱 [管理 Lake Formation 許可](managing-permissions.md)。
**注意**  
身為資料湖管理員，您只能檢視聯合資料庫中的資料表。若要執行任何其他動作，您需要對這些資料表授予自己更多許可。

------
#### [ Console ]

   1. 在**授予許可**畫面上，選取要授予許可的使用者。

   1. 選擇 **Grant** (授予)。

------
#### [ AWS CLI ]

   使用下列範例來使用 授予資料庫和資料表許可 AWS CLI：

   ```
   aws lakeformation grant-permissions --input-cli-json file://input.json
   
   {
      "Principal": {
              "DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/non-admin"
      },
      "Resource": {
             "Database": {
                   "CatalogId": "111122223333",
                    "Name": "tahoedb"
              }
       },
       "Permissions": [
                "DESCRIBE"
        ],
       "PermissionsWithGrantOption": [
                            
        ]
    }
   ```

   ```
   aws lakeformation grant-permissions --input-cli-json file://input.json
   
   {
                      "Principal": {
                             "DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/non-admin"
                      },
                     "Resource": {
                            "Table": {
                                 "CatalogId": "111122223333",
                                 "DatabaseName": "tahoedb",
                                 "Name": "public.customer"
                          }
                     },
                    "Permissions": [
                           "SELECT"
                     ],
                    "PermissionsWithGrantOption": [
                            "SELECT"
                      ]
    }
   ```

------

# 查詢聯合資料庫
<a name="qerying-fed-db"></a>

 授予許可後，使用者可以使用 Amazon Redshift 登入並開始查詢聯合資料庫。使用者現在可以使用本機資料庫名稱來參考 SQL 查詢中的 Amazon Redshift 資料共用。在 Amazon Redshift 中，透過資料共用共用之公有結構描述`public.customer`中的客戶資料表，將會建立與資料目錄中相同的對應資料表。

1. 使用 Amazon Redshift 查詢聯合資料庫之前，叢集管理員會使用下列命令從 Data Catalog 資料庫建立資料庫：

   ```
   CREATE DATABASE sharedcustomerdb FROM ARN 'arn:aws:glue:<region>:111122223333:database/tahoedb' WITH DATA CATALOG SCHEMA tahoedb
   ```

1.  叢集管理員會授予資料庫的使用許可。

   ```
   GRANT USAGE ON DATABASE sharedcustomerdb TO IAM:user;
   ```

1.  您 （聯合身分使用者） 現在可登入 SQL 工具來查詢資料表。

   ```
   Select * from sharedcustomerdb.public.customer limit 10;
   ```

 如需詳細資訊，請參閱《Amazon Redshift 管理指南》中的[查詢 AWS Glue Data Catalog](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2-glue.html)。