

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

# 屬性型存取控制
<a name="attribute-based-access-control"></a>

在 AWS Lake Formation 中，您可以使用與角色和使用者等 IAM 實體相關聯的 IAM 標籤和工作階段標籤屬性，授予目錄、資料庫、資料表和資料篩選條件等 AWS Glue Data Catalog 物件的存取權。

如需使用工作階段標籤的詳細資訊，請參閱 AWS CLI 《 使用者指南》中的[擔任角色](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/assume-role.html)。

屬性型存取控制 (ABAC) 是一種授權策略，可根據屬性定義許可。 會 AWS 呼叫這些屬性*標籤*。您可以使用 ABAC 將存取權授予相同帳戶或 Data Catalog 資源上另一個帳戶中的主體。任何具有相符 IAM 標籤或工作階段標籤索引鍵和值的 IAM 主體都可以存取資源。您必須擁有資源的可授予許可，才能進行這些授予。

ABAC 可讓您同時將存取權授予多個使用者。當新使用者加入組織時，其對資料的存取可以根據其屬性自動決定，例如其任務職能或部門，而無需管理員手動指派特定角色或許可。透過使用屬性而非角色，ABAC 提供了更簡化和可維護的方式，來管理不同系統和環境中的資料存取，最終增強了資料管理和合規。

如需定義屬性的詳細資訊，請參閱[使用 ABAC 授權根據屬性定義許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)。

如需限制、考量事項和支援 AWS 區域的資訊，請參閱 [屬性型存取控制考量事項、限制和支援的區域](abac-considerations.md)。

**Topics**
+ [使用屬性授予許可的先決條件](abac-prerequisites.md)
+ [使用屬性型存取控制授予許可](abac-granting-permissions.md)

# 使用屬性授予許可的先決條件
<a name="abac-prerequisites"></a>

若要使用屬性型存取控制 (ABAC) 授予許可，您必須完成下列先決條件：
+ 更新 **Data Catalog** **設定**，以啟用 Data Catalog 物件的 Lake Formation 許可。如需詳細資訊，請參閱[變更預設許可模型或使用混合存取模式](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-lf-config.html#setup-change-cat-settings)一節。
+ 將跨帳戶版本設定設為兩個或更高版本。
+ 將[屬性連接至](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)需要存取的 IAM 實體。
+ 只有具有必要許可的資料湖管理員或 IAM 使用者才能授予 Data Catalog 物件的存取權。如需必要許可的詳細資訊，請參閱 [IAM 許可](https://docs.aws.amazon.com/lake-formation/latest/dg/required-permissions-for-grant.html)。

# 使用屬性型存取控制授予許可
<a name="abac-granting-permissions"></a>

本主題說明在 Data Catalog 資源上授予屬性型存取許可時需要遵循的步驟。您可以使用 Lake Formation 主控台或 AWS 命令列界面 (AWS CLI)。

## 使用 ABAC 授予許可 (AWS 管理主控台)
<a name="w2aac15b9c31c19b5b1"></a>

1. 開啟 Lake Formation 主控台，網址為 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)：//****。

1. 執行以下任意一項：
   + 在導覽窗格中的**許可**下，選擇**資料湖許可**。然後選擇**授予**。
   + 在導覽窗格中，選擇資料**目錄**下的目錄。 ****然後，從**許可**下**的動作**選單中選擇目錄物件 （目錄、資料庫、資料表和資料篩選條件），然後選擇**授予**。

1. 在**授予許可**頁面上，**依屬性選擇主體**。

1. 指定屬性索引鍵和值 (s)。如果您選擇多個值，則會使用 `OR`運算子建立屬性表達式。這表示如果指派給 IAM 角色或使用者配對的任何屬性標籤值，角色/使用者會取得資源的存取許可。

   如果您指定多個屬性標籤，則會使用 `AND`運算子建立屬性表達式。只有在屬性表達式中每個屬性標籤的 IAM 角色/使用者獲指派相符標籤時，才會授予 Data Catalog 資源的主體許可。

   檢閱主控台中顯示的產生的 Cedar 政策表達式。  
![\[在授予許可對話方塊中，會建立屬性表達式。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/abac-grant-permissions.png)

1. 選擇許可範圍。如果承授者屬於外部帳戶，請選擇**外部帳戶**，然後輸入 AWS 帳戶 ID。

1. 接著，選擇 Data Catalog 帳戶或在外部帳戶中。您必須對資源擁有對應的可授予許可，才能成功完成許可授予。

1. 指定您要允許具有相符屬性之主體 （使用者或角色） 執行的動作。系統會將存取權授予已指派標籤的 IAM 實體，以及至少符合其中一個指定屬性表達式的值。在 主控台中檢閱 Cedar 政策表達式。如需 Cedar 的詳細資訊，請參閱[什麼是 Cedar？ \$1 Cedar 政策語言參考GuideLink](https://docs.cedarpolicy.com/)。

1. 接下來，選擇 Data Catalog 資源以授予存取權。您可以定義各種 Data Catalog 資源的這些許可，包括目錄、資料庫、資料表和資料篩選條件。

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

   此方法可讓您根據屬性控制存取，確保只有具有適當標籤的使用者或角色才能對指定的資源執行特定動作。

## 使用 ABAC 授予許可 (AWS CLI)
<a name="abac-granting-permissions-cli"></a>

 下列範例顯示必須滿足才能接收資源上所有可用許可的屬性表達式。或者，您可以指定個別許可`Select`，例如 `Describe`、 或 `Drop`。表達式使用 Cedar 政策表達式。如需 Cedar 的詳細資訊，請參閱[什麼是 Cedar？ \$1 Cedar 政策語言參考GuideLink](https://docs.cedarpolicy.com/)。

 此條件會檢查 IAM 主體是否有`department`標籤，且`department`標籤值等於 `sales`。

```
aws lakeformation grant-permissions 
--principal '{"DataLakePrincipalIdentifier": "111122223333:IAMPrincipals"}' \
--resource '{"Database": {"CatalogId": 111122223333, "Name": "abac-db"}}' \
--permissions ALL \
--condition '{"Expression": "context.iam.principalTags.hasTag(\"department\") \
   && context.iam.principalTags.getTag(\"department\") == \"sales\""}'
```