

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# Amazon Redshift 联合身份验证权限
<a name="federated-permissions"></a>

通过 Amazon Redshift 联合身份验证权限，您可以定义一次数据权限，然后对您 AWS 账户中的所有仓库自动强制实施这些权限，从而简化跨多个 Redshift 数据仓库的权限管理工作。这样您就无需跨多个仓库重新定义和管理权限以及实施精细的访问控制策略。

 当您将 Redshift 仓库命名空间/集群注册到 AWS Glue Data Catalog 中时，注册的仓库命名空间/集群中的所有数据库都会自动挂载到每个仓库中，这样您无需手动配置即可实现无缝的数据搜索。

您可以使用熟悉的 Redshift SQL 命令，通过 AWS Identity and Access Management（IAM）或 AWS IAM Identity Center 指定全局身份，以此来定义数据库对象的权限。这些权限与仓库数据一起存储，无论哪个仓库执行查询，都会一致地强制实施权限。

## 重要概念
<a name="federated-permissions-concepts"></a>
+ **具有联合身份验证权限的 Redshift 仓库**：在 Data Catalog 中注册并用于存储数据和 Redshift 权限的生产者仓库。
+ **使用中的 Redshift 仓库**：任何从远程仓库查询数据的仓库。使用中的仓库可以选择性地启用 Redshift 联合身份验证权限。
+ **全局身份**：IAM 和 IAM Identity Center 为启用 Redshift 联合身份验证权限的所有仓库提供全局身份。用户通过其现有的身份提供商进行一次身份验证，然后根据其全局身份获得一致的访问权限，而无论用户连接到哪个仓库。
+ **自动挂载**：启用 Redshift 联合身份验证权限的所有仓库都会自动在您账户内的所有仓库中可见。这种自动挂载功能实现了用于跨仓库分析的目录和数据库发现。
+ **身份传播**：当您执行跨仓库查询时，Redshift 会将您的全局身份（IAM 角色或 IAM Identity Center 用户）传播到远程仓库。
+ **跨仓库授权**：启用了 Redshift 联合身份验证权限的远程仓库可验证您的权限是否可用于跨仓库查询，以及对使用中的仓库强制实施这样的权限。
+ **精细访问控制**：可以跨仓库强制实施的行级别安全性（RLS）、列级别策略（CLP）和动态数据掩蔽（DDM）。

## 优势
<a name="federated-permissions-benefits"></a>

**简化管理**
+ 对仓库定义一次权限
+ 对所有使用中的仓库自动强制实施相同的权限
+ 无需跨多个仓库重新定义和管理权限以及实施精细访问控制策略。
+ 减少管理开销和可能出现的配置错误

**增强了安全性与合规性**
+ 确保在所有仓库中强制实施一致的安全策略
+ 在表级别和列级别实施精细的访问控制
+ 对任何仓库的审计权限
+ 使用额外的 SHOW 命令增强了合规性工具

**改善了用户体验**
+ 只需注册一次，无需手动创建数据共享
+ 跨所有仓库的单点登录，基于全局身份获取一致的访问权限
+ 无需手动配置目录即可实现无缝的命名空间发现
+ 无需在每个仓库中管理单独的本地用户账户

**横向可扩展性**
+ 添加新仓库而不会增加治理复杂性
+ 新的使用中的仓库会自动强制实施权限策略
+ 分析师可以立即看到注册仓库中的所有数据库

## 应用场景
<a name="federated-permissions-use-cases"></a>

**实现工作负载隔离并采用统一治理措施**

为不同的工作负载（ETL、分析、报告）隔离计算资源，同时在所有仓库中维护一致的安全策略。

**多团队数据访问**

使多个团队能够访问自己仓库中的共享数据，同时自动强制实施适当的访问控制。

**数据网格架构**

实施数据网格方法，这样多个独立的计算资源能够对共享数据进行操作，并采用统一的治理措施。

**成本优化**

针对不同的使用案例独立扩展计算资源，同时维护集中式权限管理。

# 使用 Amazon Redshift 联合身份验证权限时的注意事项
<a name="federated-permissions-considerations"></a>

以下是使用联合身份验证权限与 AWS Glue Data Catalog 共享 Amazon Redshift 数据时的注意事项和限制。有关数据共享注意事项和限制的一般信息，请参阅 [Amazon Redshift 中的数据共享注意事项](https://docs.aws.amazon.com/redshift/latest/dg/datashare-considerations.html)。

只有[集群版本 197 及更高版本](https://docs.aws.amazon.com/redshift/latest/mgmt/cluster-versions.html#cluster-version-197)支持此功能。

**不支持的区域**
+ 非洲（开普敦）
+ 亚太地区（海得拉巴）
+ 欧洲地区（米兰）
+ 欧洲（西班牙）
+ 中东（阿联酋）

**环境要求**

已注册的 Redshift 实例和使用者 Redshift 实例必须满足以下要求：
+ **实例类型**：RA3 预调配集群或 Serverless 工作组
+ **区域**：相同 AWS 区域
+ **账户**：相同 AWS 账户
+ **加密**：已启用
+ **隔离级别**：快照隔离

**不支持的对象**

使用者实例无法访问联合身份验证权限目录中的以下对象：
+ SQL UDF、Python UDF 和 Lambda UDF
+ ML 模型
+ 在已注册实例上创建的外部架构

**粗糙访问控制的限制**

仅在使用 3 点表示法时支持对表、数据库、架构、函数进行授权

**精细访问控制的限制**

除了 Amazon Redshift 中的标准行级别安全性（RLS）和动态数据掩蔽（DDM）策略限制外，如果策略包含以下系统函数，则使用者实例无法访问联合身份验证权限目录中受 RLS 或 DDM 保护的对象：
+ `user_is_member_of`
+ `role_is_member_of`
+ `user_is_member_of_role`

注意：在当前版本的 Redshift 中，在使用中的 Redshift 仓库上访问的 FGAC 相关表的元数据在目录中暂时可见。

**元数据发现**
+ 列、表、存储过程、函数和参数支持 SHOW 命令。

**Lake Formation**
+ Amazon Redshift 联合身份验证权限目录中的对象不支持 Lake Formation 权限。

**身份**
+ 只有注册了 IAM 或 AWS IAM Identity Center 的用户才能查询 Amazon Redshift 联合身份验证权限目录中的对象。
+ 当您的 Amazon Redshift 集群或 Amazon Redshift Serverless 命名空间注册了 Amazon Redshift 联合身份验证权限时，您无法使用 IAM 联合组管理 IAM 联合用户的数据治理。这包括之前通过 IAM 联合组在对象上配置的任何精细访问控制。
+ 将现有的 Amazon Redshift 集群或 Amazon Redshift Serverless 命名空间注册到 Amazon Redshift 联合身份验证权限目录时，所有 AWS IAM Identity Center 联合用户（包括以前拥有访问权限的用户）都必须被明确授予 CONNECT 权限才能访问集群或工作组。有关授予 CONNECT 权限的更多信息，请参阅[连接权限](federated-permissions-prereqs.md#federated-permissions-prereqs-connect)。
+ 对于使用主体标签和临时 IAM 凭证连接到 Amazon Redshift 集群或工作组的 AWS IAM 联合用户，系统不会将其识别为全局身份，这些用户也无法访问 Amazon Redshift 联合身份验证权限目录。只有 AWS IAM Identity Center 联合用户以及 AWS IAM 联合用户或角色才有权查询 Amazon Redshift 联合身份验证权限目录。
+ 当您的 Amazon Redshift 集群或 Amazon Redshift Serverless 命名空间注册了 Amazon Redshift 联合身份验证权限时，以下 GRANT 命令限制适用于 AWS IAM Identity Center 联合用户或角色以及 AWS IAM 联合用户或角色：
  + 您不能向任何用户或角色授予联合角色。此规则的一个例外是，您可以向 IAM 联合用户授予 Redshift 数据库角色。
  + 您不能向联合角色或用户授予任何角色。此规则的一个例外是，您可以向联合用户或角色授予系统定义的角色。

**引擎访问权限**
+ 不支持从 Redshift 以外的引擎进行访问

**更改用户集全局身份**
+ 只有“选择”、“删除”、“更新”、“显示”、“插入”操作支持
+ 通过 ALTER USER SET GLOBAL IDENTITY 与用户关联的 IAM 角色仅在满足以下条件时使用：查询针对具有联合身份验证权限的 Redshift 仓库，并且查询的目标是某种关系，例如 SELECT、UDPATE 和 DELETE 查询。
+ 在针对具有联合身份验证权限的 Redshift 仓库中的资源运行 SHOW DATABASES、SHOW SCHEMAS 和 SHOW TABLES 查询时，也可以使用此类 IAM 角色。
+ 此类 IAM 角色不用于数据定义查询，例如 CREATE、ALTER 和 DROP。

**错误消息**
+ 在 Amazon Redshift 联合身份验证权限目录中，针对数据库的任何不支持的操作都将显示以下错误：

  ```
  Operation is not supported through datashares
  ```

# 先决条件
<a name="federated-permissions-prereqs"></a>

## 设置 Amazon Redshift 联合身份验证权限时的 IAM 策略要求
<a name="federated-permissions-prereqs-iam"></a>

通过 Amazon Redshift 联合身份验证权限，您可以跨分析工作负载集中管理数据访问权限，而且联合身份验证权限由 Redshift 仓库直接管理。

要启用 Amazon Redshift 联合身份验证权限，除了创建 Redshift 预调配集群和 Serverless 命名空间所需的标准权限外，还需要特定的 IAM 权限。

要对 Redshift 预调配仓库启用 Redshift 联合身份验证权限，请执行以下操作：
+ `redshift:ModifyLakehouseConfiguration`
+ `redshift:RegisterNamespace`

要对 Redshift Serverless 仓库启用 Redshift 联合身份验证权限，请执行以下操作：
+ `redshift-serverless:UpdateLakehouseConfiguration`
+ `redshift:RegisterNamespace`

要让 AWS Glue Data Catalog 集成创建具有 Redshift 联合身份验证权限的目录，请执行以下操作：
+ `glue:CreateCatalog`
+ `glue:GetCatalog`

*要对 Lake Formation 资源进行一次性注册，以便从具有联合身份验证权限的远程仓库启用 Redshift 权限联合身份验证，请执行以下操作：*
+ `lakeformation:RegisterResource`
+ `lakeformation:RegisterResourceWithPrivilegedAccess`

## 具有联合身份验证权限的 Redshift 仓库的 IAM Identity Center 应用程序配置
<a name="federated-permissions-prereqs-configuration"></a>

Amazon Redshift 支持 Identity Center 身份传播，这样就能够在 Redshift 实例与 AWS Lake Formation 和 AWS Glue 服务之间无缝传递用户身份。此功能需要配置专用 IdC 应用程序。

*所需的 IAM 权限*

要创建和管理用于 Identity Center 身份传播的 Identity Center 应用程序，请确保您的 IAM 权限包括以下权限：

*对于 Amazon Redshift IdC 应用程序管理：*
+ `redshift:CreateRedshiftIdcApplication`
+ `redshift:ModifyRedshiftIdcApplication`
+ `redshift:DescribeRedshiftIdcApplications`

*对于 Lake Formation IdC 应用程序管理：*
+ `lakeformation:CreateLakeFormationIdentityCenterConfiguration`
+ `lakeformation:DescribeLakeFormationIdentityCenterConfiguration`
+ `lakeformation:UpdateLakeFormationIdentityCenterConfiguration`

**创建对应的 IdC 应用程序和配置**

要为您的分析工作负载建立身份传播，请创建 Lakehouse 类型的 Amazon Redshift IdC 应用程序。该应用程序无需明确分配用户即可管理权限。链接到此应用程序的 Redshift 仓库要求 IdC 用户具备 CONNECT 权限以便对连接进行身份验证。

每个 AWS 账户只能创建一个 Lakehouse 类型的 Amazon Redshift IdC 应用程序。该应用程序处理与 Lake Formation 和 AWS Glue 服务集成的所有 Redshift 仓库上的身份传播。该应用程序只能用于注册到 AWS Glue Data Catalog 的 Redshift 仓库。

**准备由 Redshift 代入并由 IdC 身份传播使用的 IAM 角色**

创建 Redshift Lakehouse IdC 应用程序时要求您账户中拥有具备某些 IAM 权限的 IAM 角色。您在 Redshift IdC 应用程序中使用的 IAM 角色应具有以下信任关系，以便允许 Redshift 代入该角色并为 IdC 身份传播设置上下文。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "redshift-serverless.amazonaws.com",
                    "redshift.amazonaws.com"
                ]
            },
            "Action": [
                "sts:AssumeRole",
                "sts:SetContext"
            ]
        }
    ]
}
```

以下是您的 IdC IAM 角色支持 IdC 身份传播所需的权限。
+  [AmazonRedshiftFederatedAuthorization](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRedshiftFederatedAuthorization.html)：此策略使得 Amazon Redshift 可以通过联合身份验证权限查询 AWS Glue Data Catalog 数据库。
+ AWSIDC 设置上下文策略

  ```
   {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "sts:SetContext"
              ],
              "Resource": "*"
          }
      ]
  }
  ```
+ [使用 AWS IAM Identity Center 将 Redshift 设置为 AWS 托管应用程序](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-idp-connect-console.html#redshift-iam-access-control-idp-connect-admin-tasks)。
+ AWSIDC Identity Center SSO IAM 策略：
  + `sso:DescribeApplication` – 需要在目录中创建身份提供者 (IdP) 条目。
  + `sso:DescribeInstance` – 用于手动创建 IdP 联合身份验证角色或用户。

    ```
    {
      "Sid": "VisualEditor1",
      "Effect": "Allow",
      "Action": [
        "sso:DescribeApplication",
        "sso:DescribeInstance"
      ],
      "Resource": [
        "arn:aws:sso:::instance/<IAM Identity Center Instance ID>",
        "arn:aws:sso::<AWS-account-id>:application/<IAM Identity Center Instance ID>/*"
      ]
    }
    ```

创建一个 Lakehouse 类型的新 Redshift IdC 应用程序

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

通过在 `create-redshift-idc-application` 请求中指定 Lakehouse 应用程序类型来创建 Lakehouse IdC 应用程序，这样就无需在 Identity Center 中进行明确的用户分配，而且实现了 IdC 用户身份验证的 `CONNECT` 权限要求：

```
aws redshift create-redshift-idc-application \
--idc-instance-arn <your_idc_instance_arn> \
--idc-display-name '<name_of_idc_application_display_on_idc_console>' \
--iam-role-arn <idc_carrier_role_arn> \
--application-type Lakehouse \
--redshift-idc-application-name '<name_of_idc_display_on_redshift_console>' \
--service-integrations '[
        {
            "LakeFormation":[
                {
                    "LakeFormationQuery":{"Authorization": "Enabled"}
                }
            ]
        },
        {
            "Redshift":[
                {
                    "Connect" : {
                        "Authorization": "Enabled"
                    }
                }
            ]
        }
    ]'
```

此配置支持在 Redshift 和 Lake Formation 之间传播可信身份，让用户可以使用其 Identity Center 凭证跨服务访问数据，而无需额外分配权限。

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

1. 登录到 AWS 管理控制台并打开 Amazon Redshift 控制台，网址：[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)。

1. 导航到 IAM Identity Center 连接页面，然后选择**创建应用程序**。

1. 配置您的常规 IdC 应用程序设置。

1. 选择**使用 AWS IAM Identity Center 配置 Amazon Redshift 联合身份验证权限（推荐）**来设置应用程序类型。

1. 默认情况下启用 Lake Formation 和 Redshift 连接身份传播集成。

1. 完成剩余的集群设置，然后选择**创建应用程序**。

------

修改现有的 Redshift IdC 应用程序

如果您现有的一个 Redshift IdC 应用程序未启用所需的服务集成，您可以更新该应用程序，使其支持服务与集群/命名空间之间的身份传播。

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

使用 `modify-redshift-idc-application` 命令启用 `LakeFormation:query` 授权和 `Redshift:Connect` 授权。这些集成对于跨服务和跨集群的 IdC 身份传播至关重要：

```
aws redshift modify-redshift-idc-application \
--redshift-idc-application-arn '<arn_of_the_target_redshift_idc_application>' \
--service-integrations '[
        {
            "LakeFormation":[
                {
                    "LakeFormationQuery":{"Authorization": "Enabled"}
                }
            ]
        },
        {
            "Redshift":[
                {
                    "Connect" : {
                        "Authorization": "Enabled"
                    }
                }
            ]
        }
    ]'
```

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

1. 登录到 AWS 管理控制台并打开 Amazon Redshift 控制台，网址：[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)。

1. 导航到 IAM Identity Center 连接页面，然后选择要编辑的现有 IdC 应用程序。

1. 选择要启用的身份传播集成并配置其他设置，然后选择**保存更改**。

------

**创建 Lake Formation Identity Center 配置**

Lake Formation 服务需要专用的 IdC 应用程序（如果尚未创建）。您还必须启用 `Redshift:Connect` 授权才能使配置正常运行。

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

使用 `create-lake-formation-identity-center-configuration` 命令启用 `Redshift:Connect` 授权。对于 Lake Formation 将 IdC 身份传播到 Redshift 集群和 Redshift Serverless 命名空间，这些集成至关重要。

```
aws lakeformation  create-lake-formation-identity-center-configuration \
--instance-arn <your_idc_instance_arn> \
--service-integrations '[{
  "Redshift": [{
    "RedshiftConnect": {
      "Authorization": "ENABLED"
    }
  }]
}]'
```

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

1. 登录 AWS 管理控制台并打开 Lake Formation 控制台（[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)）。

1. 在左侧导航窗格中，选择 **IAM Identity Center 集成**。

1. 在 IAM Identity Center 集成页面上，您可以为 Amazon Redshift 连接启用可信身份传播。Lake Formation 根据有效的权限向下游传播身份，这样获得授权的应用程序就能够代表用户访问数据。

------

**更新 Lake Formation Identity Center 配置**

如果您已配置的 Lake Formation IdC 应用程序未启用所需的服务集成，您可以更新该应用程序，使其支持服务与集群/命名空间之间的身份传播。

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

使用 `update-lake-formation-identity-center-configuration` 命令启用 `Redshift:Connect` 授权。这些集成对于跨服务和跨集群的 IdC 身份传播至关重要：

```
aws lakeformation update-lake-formation-identity-center-configuration \
--service-integrations '[{                                                            
  "Redshift": [{
    "RedshiftConnect": {
      "Authorization": "ENABLED"
    }
  }]
}]'
```

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

1. 登录 AWS 管理控制台并打开 Lake Formation 控制台（[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)）。

1. 在左侧导航窗格中，选择 **IAM Identity Center 集成**。

1. 在 IAM Identity Center 集成页面上，您可以为 Amazon Redshift 连接启用可信身份传播。Lake Formation 根据有效的权限向下游传播身份，这样获得授权的应用程序就能够代表用户访问数据。

------

## Lake Formation 先决条件
<a name="federated-permissions-prereqs-lakeformation"></a>

客户需要 Lake Formation `CREATE_CATALOG` 权限才能启用具有 Amazon Redshift 联合身份验证权限的 AWS Glue Data Catalog。

1. 如果该账户属于现有的 Lake Formation 客户，则 Lake Formation 管理员必须向每个集群创建者明确授予 CREATE\$1CATALOG 权限。使用以下示例 CLI 命令：

   ```
   aws lakeformation grant-permissions \
       --cli-input-json \
       '{
           "Principal": {
               "DataLakePrincipalIdentifier": "<PrincipalArn>"
           },
           "Resource": {
               "Catalog": {}
           },
           "Permissions": [
               "CREATE_CATALOG"
           ]
       }'
   ```

1. 如果该账户从未使用过 Lake Formation，请在 Lake Formation 控制台的“管理角色和任务”页面中确认目录创建者是否已设置为 IAMAllowedPrincipals。如果未设置好，请按照[创建数据湖管理员](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-lf-config.html#create-data-lake-admin)中的说明设置数据湖管理员。或者，如果您仅使用具有 Amazon Redshift 联合身份验证权限的 AWS Glue Data Catalog，则可以创建具有最少所需策略的数据湖管理员。

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Statement1",
               "Effect": "Allow",
               "Action": [
                   "lakeformation:PutDataLakeSettings",
                   "lakeformation:GrantPermissions",
                   "lakeformation:GetDataLakeSettings",
                   "lakeformation:BatchGrantPermissions",
                   "lakeformation:ListPermissions"
               ],
               "Resource": [
                   "*"
               ]
           }
       ]
   }
   ```

1. 让数据湖管理员向 IAMAllowedPrincipals 授予创建目录的权限。在“管理角色和任务”页面上，可以通过**授权**按钮向目录创建者授予访问权限。

## 连接权限
<a name="federated-permissions-prereqs-connect"></a>

作为 Amazon Redshift 联合身份验证权限的一部分，Amazon Redshift 引入了 CONNECT 权限，用于管理 AWS IAM Identity Center 联合用户对 Amazon Redshift 工作组或集群的访问权限。当工作组或集群上启用了 Amazon Redshift 联合身份验证权限时，此功能可用。

此权限使管理员能够在每个已启用 Amazon Redshift 联合身份验证权限的 Amazon Redshift 工作组或集群中，通过精细权限控制用户访问。Amazon Redshift 管理员可以指定哪些 AWS IAM Identity Center 联合用户或组有权直接连接到 Amazon Redshift 工作组或集群，从而提供对每个工作组或集群上的 AWS IAM Identity Center 用户访问的精细控制。

### 语法
<a name="federated-permissions-prereqs-connect-syntax"></a>

```
GRANT CONNECT [ON WORKGROUP]
TO [USER] <prefix>:<username> | ROLE <prefix>:<rolename> | PUBLIC;
```

CONNECT [ON WORKGROUP]  
授予连接工作组的权限。CONNECT 权限仅适用于 AWS IAM Identity Center 身份（用户和角色）。

TO <prefix>:<username>  
指示接收权限的 AWS IAM Identity Center 联合用户。

TO ROLE <prefix>:<rolename>  
指示接收权限的 AWS IAM Identity Center 联合组。

PUBLIC  
向所有 AWS IAM Identity Center 联合用户授予 CONNECT 权限，包括以后创建的用户。

# 载入
<a name="federated-permissions-onboarding"></a>

## Redshift 集群注册
<a name="federated-permissions-onboarding-cluster-registration"></a>

Redshift 支持创建新集群或者通过 AWS Glue Data Catalog（GDC）注册从快照还原集群。您可以指定此注册的 GDC 目录名称部分。要支持 IdC 身份传播，您可以指定 Lakehouse 类型的 Redshift IdC 应用程序的 ARN，用于启用 IdC 身份传播。

**使用 Glue Data Catalog 注册创建新集群**

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

要自动将新创建的集群注册到 Data Catalog，请提供将用于创建和注册 Data Catalog 的 catalog-name。`redshift-idc-application-arn` 参数是可选的，如果您想将集群与 Lakehouse 类型的 Redshift IdC 应用程序相关联，请包括此参数。您也可以在以后建立此 IdC 应用程序关联。

```
aws redshift create-cluster \
    --cluster-identifier 'redshift-cluster' \
   --catalog-name 'glue-data-catalog-name' \
   --redshift-idc-application-arn 'arn:aws:redshift:us-east-1:012345678912:redshiftidcapplication:3f966e50-f1b7-495c-8ace-bd0d6c3c3b17' \
   --<other_configurations_as_needed>
```

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

1. 登录到 AWS 管理控制台并打开 Amazon Redshift 控制台，网址：[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)。

1. 导航到预调配集群的控制面板，然后选择**创建集群**。

1. 配置常规集群设置。

1. 在“注册 AWS Glue Data Catalog”部分，选择**注册 Amazon Redshift 联合身份验证权限**。
   + 输入目录名称标识符。
   + （推荐）使用 AWS IAM Identity Center 选择与 Redshift IdC 应用程序关联的 Amazon Redshift 联合身份验证权限。

1. 完成剩余的集群设置，然后选择**创建集群**。

------

**通过 AWS Glue Data Catalog 注册还原新集群**

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

要通过 AWS Glue Data Catalog 集成将快照还原到新集群中，请提供将用于创建和注册 AWS Glue 目录的 catalog-name。`redshift-idc-application-arn` 参数是可选的，如果您想将集群与 Lakehouse 类型的 Redshift IdC 应用程序相关联，请包括此参数。您也可以在以后建立此 IdC 应用程序关联。

```
aws redshift restore-from-cluster-snapshot \
   --cluster-identifier 'redshift-cluster' \
   --catalog-name 'glue-data-catalog-name' \
   --snapshot-identifier 'redshift-cluster-snapshot' \
   --redshift-idc-application-arn 'arn:aws:redshift:us-east-1:012345678912:redshiftidcapplication:3f966e50-f1b7-495c-8ace-bd0d6c3c3b17' \
   --<other_configurations_as_needed>
```

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

1. 登录到 AWS 管理控制台并打开 Amazon Redshift 控制台，网址：[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)。

1. 导航到预调配快照页面。在快照表中，从**还原快照**下拉菜单中选择**还原到预调配集群**。

1. 配置常规集群设置。

1. 在“注册 AWS Glue Data Catalog”部分，选择**注册 Amazon Redshift 联合身份验证权限**。
   + 输入目录名称标识符。
   + （推荐）使用 AWS IAM Identity Center 选择与 Redshift IdC 应用程序关联的 Amazon Redshift 联合身份验证权限。

1. 完成剩余的集群设置，然后选择**创建集群**。

------

**通过 AWS Glue Data Catalog 注册修改现有集群**

如果您的 Redshift 集群已经与非 Lakehouse 类型的 Redshift IdC 应用程序相关联，则在 AWS Glue Data Catalog 注册期间会发生以下情况：
+ 如果未提供 Redshift IdC 应用程序 ARN，则目录中的现有 Redshift IdC 应用程序将被设置为禁用状态。
+ 指定来自不同 AWS IAM Identity Center 实例的 Lakehouse 类型的 Redshift IdC 应用程序时，当前 IdC 提供程序将被禁用
+ 提供来自同一 AWS IAM Identity Center 实例的 Lakehouse 类型的 Redshift IdC 应用程序时
  + 您目录中的 Redshift IdC 应用程序 ARN 将更改为 Lakehouse 类型的 Redshift IdC 应用程序的 ARN。更新后的目录可以通过查询 svv\$1identity\$1providers 进行检查。有关 svv\$1identity\$1providers 的更多信息，请参阅 [svv\$1identity\$1providers](https://docs.aws.amazon.com/redshift/latest/dg/r_SVV_IDENTITY_PROVIDERS.html)。
  + 对于之前有权访问 Redshift 集群的 AWS IAM Identity Center 联合用户，必须由管理员明确授予 CONNECT 权限才能访问该集群。有关授予 CONNECT 权限的更多信息，请参阅[连接权限](federated-permissions-prereqs.md#federated-permissions-prereqs-connect)。
  + 注册 AWS Glue Data Catalog 后，您现有的 AWS IAM Identity Center 联合身份及所拥有的资源保持不变。这些联合身份的命名空间关联同样也会保留。

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

您可以使用 `modify-lakehouse-configuration` 命令将集群注册到 AWS Glue Data Catalog，`catalog-name` 用于创建和注册您的 AWS Glue 目录。要支持 IdC 身份传播，请指定 lakehouse 类型的 RedshiftIdcApplication 的 ARN，这需要 Lakehouse 类型的 Redshift IdC 应用程序，请参阅[创建一个 Lakehouse 类型的新 Redshift IdC 应用程序：具有联合身份验证权限的 Redshift 仓库的 Identity Center 应用程序配置](https://docs.aws.amazon.com/redshift/latest/dg/federated-permissions-prereqs.html#federated-permissions-prereqs-configuration)。

```
aws redshift modify-lakehouse-configuration \
    --cluster-identifier 'redshift-cluster' \
    --lakehouse-registration Register \
    --catalog-name 'glue-data-catalog-name' \
    --lakehouse-idc-registration Associate \
    --lakehouse-idc-application-arn 'arn:aws:redshift:us-east-1:012345678912:redshiftidcapplication:3f966e50-f1b7-495c-8ace-bd0d6c3c3b17' \
```

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

1. 登录到 AWS 管理控制台并打开 Amazon Redshift 控制台，网址：[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)。

1. 导航到要注册的预调配集群，然后将其选中。

1. 在集群的详细信息页面上，从**操作**下拉菜单中选择**注册 AWS Glue Data Catalog**。

1. 选择**注册 Amazon Redshift 联合身份验证权限**选项，然后
   + 输入目录名称标识符。
   + （推荐）使用 AWS IAM Identity Center 选择与 Redshift IdC 应用程序关联的 Amazon Redshift 联合身份验证权限，然后选择**注册**。

------

## Redshift Serverless 命名空间注册
<a name="federated-permissions-onboarding-namespace-registration"></a>

Redshift Serverless 支持将连接了工作组的 Serverless 命名空间注册到 AWS Glue Data Catalog。请注意，在此更新期间，数据库将重新启动。

如果您的 Redshift Serverless 命名空间已经与非 Lakehouse 类型的 Redshift IdC 应用程序相关联，则在 Glue Data Catalog 注册期间会发生以下情况：
+ 如果未提供 Redshift IdC 应用程序 ARN，则目录中的现有 Redshift IdC 应用程序将被设置为禁用状态。
+ 指定来自不同 AWS IAM Identity Center 实例的 Lakehouse 类型的 Redshift IdC 应用程序时，当前 IdC 提供程序将被禁用
+ 提供来自同一 AWS IAM Identity Center 实例的 Lakehouse 类型的 Redshift IdC 应用程序时
  + 您目录中的 Redshift IdC 应用程序 ARN 将更改为 Lakehouse 类型的 Redshift IdC 应用程序的 ARN。更新后的目录可以通过查询 svv\$1identity\$1providers 进行检查。有关 svv\$1identity\$1providers 的更多信息，请参阅 [svv\$1identity\$1providers](https://docs.aws.amazon.com/redshift/latest/dg/r_SVV_IDENTITY_PROVIDERS.html)。
  + 对于之前有权访问 Redshift 集群的 AWS IAM Identity Center 联合用户，必须由管理员明确授予 CONNECT 权限才能访问该集群。有关授予 CONNECT 权限的更多信息，请参阅[连接权限](federated-permissions-prereqs.md#federated-permissions-prereqs-connect)。
  + 注册 AWS Glue Data Catalog 后，您现有的 AWS IAM Identity Center 联合身份及所拥有的资源保持不变。这些联合身份的命名空间关联同样也会保留。

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

您可以使用 `update-lakehouse-configuration` 命令将 Redshift Serverless 命名空间注册到 AWS Glue Data Catalog，`catalog-name` 用于创建和注册您的 Glue 目录。要支持 IdC 身份传播，请指定 Lakehouse 类型的 Redshift IdC 应用程序的 ARN。

```
aws redshift-serverless update-lakehouse-configuration \
    --namespace-name 'serverless-namespace-name' \
    --lakehouse-registration Register \
    --catalog-name 'glue-data-catalog-name' \
    --lakehouse-idc-registration Associate \
    --lakehouse-idc-application-arn 'arn:aws:redshift:us-east-1:012345678912:redshiftidcapplication:3f966e50-f1b7-495c-8ace-bd0d6c3c3b17'
```

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

1. 登录到 AWS 管理控制台并打开 Amazon Redshift 控制台，网址：[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)。

1. 导航到要注册的预调配集群，然后将其选中。

1. 在集群的详细信息页面上，从**操作**下拉菜单中选择**注册 AWS Glue Data Catalog**。

1. 选择**注册 Amazon Redshift 联合身份验证权限**选项，然后
   + 输入目录名称标识符。
   + （推荐）使用 AWS IAM Identity Center 选择与 Redshift IdC 应用程序关联的 Amazon Redshift 联合身份验证权限，然后选择**注册**。

------

## 启用 AWS IAM Identity Center 身份传播
<a name="federated-permissions-onboarding-propagation"></a>

Amazon Redshift 支持 Identity Center（IdC）身份传播，以便在 Redshift 实例与 AWS Lake Formation/AWS Glue 服务之间无缝传递 IdC 用户身份。

**先决条件**
+ 您已经创建了 Lakehouse 类型的 Amazon Redshift IdC 应用程序，请参阅[具有联合身份验证权限的 Redshift 仓库的 AWS IAM Identity Center 应用程序配置](https://docs.aws.amazon.com/redshift/latest/dg/federated-permissions-prereqs.html#federated-permissions-prereqs-configuration)。
+ 您有一个已经注册到 AWS Glue Data Catalog 的 Amazon Redshift 集群或 Amazon Redshift Serverless 命名空间。
  + Redshift Serverless 命名空间需要连接工作组才能执行相关操作。

如果您的 Redshift 集群或 Redshift Serverless 命名空间已经与非 Lakehouse 类型的 Redshift IdC 应用程序相关联，则在 AWS Glue Data Catalog 注册期间会发生以下情况：
+ 如果未提供 Redshift IdC 应用程序 ARN，则目录中的现有 Redshift IdC 应用程序将被设置为禁用状态。
+ 指定来自不同 AWS IAM Identity Center 实例的 Lakehouse 类型的 Redshift IdC 应用程序时，当前 IdC 提供程序将被禁用
+ 提供来自同一 AWS IAM Identity Center 实例的 Lakehouse 类型的 Redshift IdC 应用程序时
  + 您目录中的 Redshift IdC 应用程序 ARN 将更改为 Lakehouse 类型的 Redshift IdC 应用程序的 ARN。更新后的目录可以通过查询 svv\$1identity\$1providers 进行检查。有关 svv\$1identity\$1providers 的更多信息，请参阅 [svv\$1identity\$1providers](https://docs.aws.amazon.com/redshift/latest/dg/r_SVV_IDENTITY_PROVIDERS.html)。
  + 对于之前有权访问 Redshift 集群的 AWS IAM Identity Center 联合用户，必须由管理员明确授予 CONNECT 权限才能访问该集群。有关授予 CONNECT 权限的更多信息，请参阅[连接权限](federated-permissions-prereqs.md#federated-permissions-prereqs-connect)。
  + 注册 AWS Glue Data Catalog 后，您现有的 AWS IAM Identity Center 联合身份及所拥有的资源保持不变。这些联合身份的命名空间关联同样也会保留。

### 为 Amazon Redshift 预调配集群启用 AWS IAM Identity Center 身份传播
<a name="federated-permissions-onboarding-propagation-cluster"></a>

对于将其命名空间注册到了 AWS Glue Data Catalog 的 Amazon Redshift 预调配集群，该集群需要的 Lakehouse 类型的 Amazon Redshift IdC 应用程序并不要求向该应用程序进行明确的用户 AWS IAM Identity Center 身份分配，IdC 用户的登录权限由 Redshift 仓库上的 CONNECT 权限管理。

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

您可以使用 `modify-lakehouse-configuration` 命令为具有 Redshift 联合身份验证权限的集群启用 IdC 身份传播，方法是指定 lakehouse 类型的 RedshiftIdcApplication 的 ARN，这需要 Lakehouse 类型的 Redshift IdC 应用程序，请参阅[创建一个 Lakehouse 类型的新 Redshift IdC 应用程序：具有联合身份验证权限的 Redshift 仓库的 Identity Center 应用程序配置](https://docs.aws.amazon.com/redshift/latest/dg/federated-permissions-prereqs.html#federated-permissions-prereqs-configuration)。

```
aws redshift modify-lakehouse-configuration \
    --cluster-identifier 'redshift-cluster' \
    --lakehouse-idc-registration Associate \
    --lakehouse-idc-application-arn 'arn:aws:redshift:us-east-1:012345678912:redshiftidcapplication:3f966e50-f1b7-495c-8ace-bd0d6c3c3b17' \
```

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

1. 登录到 AWS 管理控制台并打开 Amazon Redshift 控制台，网址：[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)。

1. 导航到要注册的预调配集群，然后将其选中。

1. 在集群的详细信息页面上，从**操作**下拉菜单中选择**注册 AWS Glue Data Catalog**。

1. 使用 AWS IAM Identity Center 下拉菜单，对 Amazon Redshift 联合身份验证权限选择**启用**来关联 IdC 应用程序，然后选择**保存更改**。

------

### 为 Amazon Redshift Serverless 命名空间启用 AWS IAM Identity Center 身份传播
<a name="federated-permissions-onboarding-propagation-namespace"></a>

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

您可以使用 `modify-lakehouse-configuration` 命令为具有 Redshift 联合身份验证权限的命名空间启用 IdC 身份传播，方法是指定 lakehouse 类型的 RedshiftIdcApplication 的 ARN，这需要 Lakehouse 类型的 Redshift IdC 应用程序，请参阅[创建一个 Lakehouse 类型的新 Redshift IdC 应用程序：具有联合身份验证权限的 Redshift 仓库的 Identity Center 应用程序配置](https://docs.aws.amazon.com/redshift/latest/dg/federated-permissions-prereqs.html#federated-permissions-prereqs-configuration)。

```
aws redshift modify-lakehouse-configuration \
    --cluster-identifier 'redshift-cluster' \
    --lakehouse-idc-registration Associate \
    --lakehouse-idc-application-arn 'arn:aws:redshift:us-east-1:012345678912:redshiftidcapplication:3f966e50-f1b7-495c-8ace-bd0d6c3c3b17' \
```

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

1. 登录到 AWS 管理控制台并打开 Amazon Redshift 控制台，网址：[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)。

1. 导航到要编辑注册信息的 Serverless 命名空间，然后将其选中。

1. 在集群的详细信息页面上，从**操作**下拉菜单中选择**编辑 AWS Glue Data Catalog 注册**。

1. 使用 AWS IAM Identity Center 下拉菜单，对 Amazon Redshift 联合身份验证权限选择**启用**来关联 IdC 应用程序，然后选择**保存更改**。

------

## ALTER USER SET GLOBAL IDENTITY
<a name="federated-permissions-onboarding-alter-set-global-identity"></a>

除了 IAM 和 AWS IAM Identity Center 凭证以外，对具有联合身份验证权限的 Redshift 仓库运行查询的用户，还可以使用 IAM 角色进行身份验证。超级用户可以为其他非联合用户设置一个 IAM 角色，使其在建立会话时自动关联，在对具有联合身份验证权限的 Redshift 仓库进行查询时，将代入此 IAM 角色。提供此功能是为了让 AWS IdC 用户可以通过非交互式方式进行身份验证。

此功能在以下使用案例中非常有用：
+ 拥有庞大且复杂设置的客户，此类客户除具备全局身份的用户外，还存在现有的本地仓库用户。
+ 使用 IdC 的客户，此类客户希望无需通过交互式浏览器操作即可实现自动登录。

要求和限制：
+ 只有超级用户才能通过 `ALTER USER` 设置 IAM 角色。
+ IAM 角色必须附加到集群。
+ IAM 角色必须拥有访问相关资源的权限，以便在具有联合身份验证权限的 Redshift 仓库上运行查询。建议使用 `[AmazonRedshiftFederatedAuthorization](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRedshiftFederatedAuthorization.html)` AWS 托管式策略。
+  通过 GLOBAL IDENTITY IAM 角色进行身份验证的用户，可以查询具有联合身份验证权限的 Redshift 仓库中的视图，但不能对视图执行 CREATE、ALTER、REFRESH 或 DROP 操作。

### 语法
<a name="federated-permissions-onboarding-alter-set-global-identity-syntax"></a>

以下语法描述了 `ALTER USER SET GLOBAL IDENTITY` 命令，该命令用于为非联合数据库用户设置 IAM 角色，使用户能够对具有联合身份验证权限的 Redshift 仓库运行查询。

```
ALTER USER username SET
GLOBAL IDENTITY IAM_ROLE 'arn:aws:iam::<AWS-account-id>:role/<role-name>'
```

现在，当以目标用户的身份（通过直接以 *username* 身份进行连接，或者使用 [SET SESSION AUTHORIZATION](https://docs.aws.amazon.com/redshift/latest/dg/r_SET_SESSION_AUTHORIZATION.html)）进行身份验证时，您可以使用以下命令检查全局身份角色

```
SHOW GLOBAL IDENTITY
```

请注意，全局身份角色在建立会话时会与用户关联。如果您为当前已登录用户设置了全局身份，则该用户需要重新连接才能使全局身份生效。

以下命令可用于移除关联的 IAM 角色。

```
ALTER USER username RESET GLOBAL IDENTITY
```

### 参数
<a name="federated-permissions-onboarding-alter-set-global-identity-parameters"></a>

username  
用户的名称。不能是联合用户，例如 IAM 用户或 AWS IdC 用户。

IAM\$1ROLE 'arn:aws:iam::<account-id>:role/<role-name>'  
当用户 *username* 对具有联合身份验证权限的 Redshift 仓库运行查询时，使用您的集群用于身份验证和授权的 IAM 角色的 Amazon 资源名称（ARN）。此角色必须具有运行查询所需的权限。建议使用 `[AmazonRedshiftFederatedAuthorization](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRedshiftFederatedAuthorization.html)` AWS 托管式策略。

# 使用 Redshift 联合身份验证权限查询注册到 AWS Glue Data Catalog 中的目录
<a name="federated-permissions-querying"></a>

当您使用 Amazon Redshift 联合身份验证权限将 Amazon Redshift 数据仓库注册到 AWS Glue Data Catalog 时，该命名空间中的数据库将自动挂载到该 AWS 账户和区域中的所有 Amazon Redshift 实例上。这样便实现了跨多个仓库环境进行查询，同时通过全局身份和精细访问控制（FGAC）策略维护安全性。

## 先决条件
<a name="federated-permissions-querying-prereqs"></a>

在查询联合数据库之前，请确保您满足以下条件：
+ 附加到 IAM 用户或角色的 [AmazonRedshiftFederatedAuthorization](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRedshiftFederatedAuthorization.html) AWS 托管式策略。要获得细粒度的访问控制，您可以从此策略中授予特定的 IAM 操作，而不是附加完整的策略。
+ 为源数据仓库中的目录对象配置了适当的权限
+ 可访问位于同一 AWS 账户和区域中的 Amazon Redshift 数据仓库。

## 查询联合数据库
<a name="federated-permissions-querying-federated-db"></a>

您可以通过用于访问表的三部分语法，查询已注册目录下数据库中的对象：

```
database@namespace_catalog.schema.table
```

### 示例查询
<a name="federated-permissions-querying-sample-query"></a>

```
SELECT * FROM my_database@my_namespace.sales.transactions  
WHERE transaction_date >= '2024-01-01';
```

此外，您还可以通过 [USE database](https://docs.aws.amazon.com/redshift/latest/dg/r_USE_command.html) 访问联合数据库中的对象。

联合数据库也可通过[直接连接](https://docs.aws.amazon.com/redshift/latest/dg/database-direct-connect.html)访问。

## 安全性和访问控制
<a name="federated-permissions-querying-security"></a>

**全局身份和 FGAC 强制实施**

当您启用具有联合身份验证权限的 Amazon Redshift 数据仓库时，将在使用中的仓库内自动强制实施在这些对象上定义的授权和 FGAC 策略。这可确保多仓库环境中一致的安全性。

**支持的安全功能**

您可以对 Amazon Redshift 数据仓库中的对象配置以下安全控制措施，这些控制措施将对所有使用中的仓库强制实施
+ **列级别权限（CLP）**：授予或限制对特定列的访问权限
+ **行级别安全性（RLS）**：根据用户属性控制对特定行的访问权限
+ **动态数据掩蔽（DDM）**：根据用户权限自动掩蔽敏感数据

# 管理 Amazon Redshift 联合身份验证权限目录上的访问控制
<a name="federated-permissions-managing-access"></a>

借助 Amazon Redshift 联合身份验证权限，用户可以对 AWS 账户中的任何 Redshift 仓库定义粗糙和精细的访问控制。粗糙权限管理对表、视图和数据库对象的访问权限，包括范围内权限，而精细访问控制则支持列级别的权限以及应用行级别安全性（RLS）和动态数据掩蔽（DDM）等安全策略。

## 授权/撤销
<a name="federated-permissions-managing-access-grant-revoke"></a>

通过联合身份验证权限，您可以定义对表级别访问的权限，例如在任何 Redshift 仓库的 Redshift 联合身份验证权限数据库中，对表和视图进行数据读写的访问权限。

```
GRANT SELECT ON "sales_db@finance-catalog".sales_schema.sales_table TO "IAMR:sales_analyst";  

GRANT INSERT ON "sales_db@finance-catalog".sales_schema.sales_view TO "IAMR:sales_data_engineer";  

REVOKE UPDATE ON "sales_db@finance-catalog".sales_schema.us_sales_view FROM "IAMR:us_sales_analyst";  

REVOKE DELETE ON "sales_db@finance-catalog".sales_schema.us_sales_view FROM "IAMR:us_sales_analyst";
```

Amazon Redshift 联合身份验证权限支持范围内权限，让您可以对某个数据库或架构中某种类型的所有对象授予或撤销权限。

```
GRANT SELECT FOR TABLES IN SCHEMA "sales_db@finance-catalog".sales_schema TO "IAMR:sales_manager";  

REVOKE UPDATE FOR TABLES IN SCHEMA sales_schmea DATABASE "sales_db@finance-catalog" FROM "IAMR:sales_analyst";
```

您可以定义对数据库授予/撤销的访问权限。

```
GRANT CREATE ON DATABASE "sales_db@finance-catalog" TO "IAMR:sales_admin";  

REVOKE TEMP ON DATABASE "sales_db@finance-catalog" FROM "IAMR:sales_analyst";
```

有关 Amazon Redshift 联合身份验证权限支持的授权语法的更多信息，请参阅[您可以在 Amazon Redshift 联合身份验证权限目录上授予的权限](#federated-permissions-managing-access-grant-allowed)。

## 访问权限的精细控制
<a name="federated-permissions-managing-access-fgac"></a>

您可以使用列级别访问控制、行级别安全性（RLS）和动态数据掩蔽（DDM），对具有 Amazon Redshift 联合身份验证权限的数据库中的敏感数据定义精细访问控制。列级别访问控制可用于对表和视图定义更精细的列级别访问权限。超级用户以及在数据库上具有 `sys:secadmin` 角色的用户或角色可以创建 RLS 和 DDM 策略，将这些策略附加到特定关系，以及在关系上启用 RLS。

### 列级别访问控制：
<a name="federated-permissions-managing-access-column"></a>

您可以对表或视图中的个别列授予或撤销特定权限。

```
GRANT SELECT ON "sales_db@finance-catalog".sales_schema.sales_table(order_number, sales_date, purchase_amount, sale_amount) TO "IAMR:sales_revenue_analyst";  

REVOKE UPDATE ON "sales_db@finance-catalog".sales_schema.us_sales_view(order_number, sales_date, purchase_amount, sale_amount) FROM "IAMR:sales_revenue_analyst";
```

### 行级别安全性（RLS）：
<a name="federated-permissions-managing-access-row"></a>

您可以为某个关系启用或禁用行级别安全性。

```
ALTER TABLE "sales_db@finance-catalog".sales_schema.sales_table ROW LEVEL SECURITY ON;
```

您可以在数据库上创建、更改或删除 RLS 策略。

```
-- Create an RLS policy  
CREATE RLS POLICY "sales_db@finance-catalog".policy_america  
WITH (region VARCHAR(10))   
USING (region = 'USA');  

-- Alter an RLS policy  
ALTER RLS POLICY "sales_db@finance-catalog".policy_america  
USING (region IN ('USA', 'CANADA', 'Mexico'));  

-- Drop an RLS policy  
DROP RLS POLICY "sales_db@finance-catalog".policy_america;
```

您可以在关系上附加或分离 RLS 策略。

```
-- Attach an RLS policy  
ATTACH RLS POLICY "sales_db@finance-catalog".policy_america  
ON "sales_db@finance-catalog".sales_schema.sales_table  
TO "IAMR:america_sales_analyst";  

-- Detach an RLS policy  
DETACH RLS POLICY "sales_db@finance-catalog".policy_america  
ON "sales_db@finance-catalog".sales_schema.sales_view_america  
FROM "IAMR:global_sales_analyst";
```

### 动态数据掩蔽（DDM）：
<a name="federated-permissions-managing-access-ddm"></a>

您可以在数据库上创建、更改或删除掩蔽策略。

```
-- Create a masking policy  
CREATE MASKING POLICY "sales_db@finance-catalog".hash_credit  
WITH (credit_card varchar(256))  
USING (sha2(credit_card + 'testSalt', 256));  

-- Alter an masking policy  
ALTER MASKING POLICY "sales_db@finance-catalog".hash_credit  
USING (sha2(credit_card + 'otherTestSalt', 256));  

-- Drop an masking policy  
DROP MASKING POLICY "sales_db@finance-catalog".hash_credit;
```

您可以在关系上附加或分离掩蔽策略。

```
-- Attach a masking policy  
 ATTACH MASKING POLICY hash_credit  
ON "sales_db@finance-catalog".sales_schema.transaction_table (credit_card)  
TO "IAMR:sales_analyst" PRIORITY 30;   

-- Detach a masking policy  
DETACH MASKING POLICY hash_credit  
ON "sales_db@finance-catalog".sales_schema.transaction_view (credit_card)  
FROM "IAMR:transaction_analyst";
```

超级用户或具有 `sys:secadmin` 权限的用户可以通过联合身份验证权限，使用 [SHOW POLICIES](r_SHOW_POLICIES.md) 命令查看 RLS 和 DDM 策略，及其在关系上的附件。

**注意**  
Amazon Redshift 联合身份验证权限不支持 RLS、DDM 策略定义中的用户定义函数（UDF）。
Amazon Redshift 联合身份验证权限不支持 Redshift SQL 函数 user\$1is\$1member\$1of、role\$1is\$1member\$1of、user\$1is\$1member\$1of\$1role。

### 您可以在 Amazon Redshift 联合身份验证权限目录上授予的权限
<a name="federated-permissions-managing-access-grant-allowed"></a>

对于具有 Amazon Redshift 联合身份验证权限的数据库，支持使用 SQL 语句对资源进行不同粒度级别的权限管理。该语法支持本地表引用（连接到包含资源的数据库时或源数据库处于 USE 状态时）和完全限定的跨数据库引用。

**注意**
+ *username* 可以引用 IAM 用户、IAM 角色或 IdC（AWS IAM Identity Center）用户。
+ *role\$1name* 可以引用 IdC 组。不支持 IAM 组。

#### 粗糙权限
<a name="federated-permissions-managing-access-grant-allowed-coarse"></a>

```
GRANT { SELECT | INSERT | UPDATE | DELETE | TRUNCATE} ON   
[ TABLE ] { table_name | database@catalog.schema_name.table_name }  
TO { username | ROLE role_name | PUBLIC }  

REVOKE { SELECT | INSERT | UPDATE | DELETE | TRUNCATE } ON  
[ TABLE ] { table_name | database@catalog.schema_name.table_name }   
FROM { username | ROLE role_name | PUBLIC }
```

#### 列级别权限
<a name="federated-permissions-managing-access-grant-allowed-column"></a>

```
GRANT { { SELECT | UPDATE | DELETE }   
( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) }  
ON { table_name | database@catalog.schema_name.table_name }  
TO { username | ROLE role_name | PUBLIC }  

REVOKE { { SELECT | UPDATE | DELETE }   
( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) }  
ON { table_name | database@catalog.schema_name.table_name }  
FROM { username | ROLE role_name | PUBLIC }
```

### 范围内权限
<a name="federated-permissions-managing-access-scoped"></a>

```
GRANT { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] }  
FOR SCHEMAS IN  
DATABASE database@catalog   
TO { username [ WITH GRANT OPTION ] | ROLE role_name } [, ...]  

GRANT   
{ { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [ PRIVILEGES ] } }  
FOR TABLES IN  
{ SCHEMA schema_name [DATABASE database@catalog ] | DATABASE database@catalog }  
TO { username [ WITH GRANT OPTION ] | ROLE role_name } [, ...]  

REVOKE [ GRANT OPTION ] { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] }   
FOR SCHEMAS IN   
DATABASE database@catalog   
FROM { username | ROLE role_name } [, ...]   

REVOKE [ GRANT OPTION ] { { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [ PRIVILEGES ] } }   
FOR TABLES IN   
{ SCHEMA schema_name [ DATABASE database@catalog ] | DATABASE database@catalog }   
FROM { username | ROLE role_name } [, ...]
```

# Amazon Redshift 联合身份验证权限：端到端示例
<a name="federated-permissions-end-examples"></a>

以下端到端示例说明您如何使用 Amazon Redshift 联合身份验证权限来创建和管理全面的数据治理策略。这些策略包括行级别安全性（RLS）、动态数据掩蔽（DDM）和列级别权限（CLP），它们协同工作，根据用户角色和条件控制数据访问权限。

您必须是 `superuser` 或具有 [sys:secadmin](https://docs.aws.amazon.com/redshift/latest/dg/r_roles-default.html) 角色才能运行此示例。

## 先决条件
<a name="federated-permissions-end-examples-prereqs"></a>

这些示例假设账户中已存在以下“IAMR:role\$1name”角色，如果没有，请创建。此外，Redshift 数据仓库注册到名为“catalog\$1name”的 AWS Glue Data Catalog，并具有数据库“db\$1name”。

## 在目录实例上，将 sys:secadmin 角色授予对应的 IAM 角色
<a name="federated-permissions-end-examples-catalog-grant"></a>

```
-- Grant sys:secadmin role to relevant user (must be run on Redshift catalog instance)   
        GRANT ROLE sys:secadmin TO "IAMR:AccountSecurityAdminrole_name";
```

### 剩余部分将在 Redshift 计算仓库上运行
<a name="federated-permissions-end-examples-compute"></a>

如果您在使用 IAM 或 IdC 用户，则可以跳过以下两个步骤来创建本地仓库用户和全局身份映射。

#### 步骤 1：创建本地仓库所需的用户用于测试治理策略
<a name="federated-permissions-end-examples-users"></a>

```
-- Create test users.  
CREATE USER alice WITH PASSWORD 'Alice_pass_1';  
CREATE USER oscar WITH PASSWORD 'Oscar_pass_1';  
CREATE USER sierra WITH PASSWORD 'Sierra_pass_1';
```

#### 步骤 2：设置全局身份 IAM 角色映射
<a name="federated-permissions-end-examples-mapping"></a>

```
-- Map local users to IAM roles (executed by superuser).  
        
-- Make user sierra a sys:secadmin by setting the global identity  
-- to `IAMR:AccountSecurityAdmin`.  
-- This role has been granted secadmin privilege on Redshift catalog instance.  

ALTER USER sierra SET GLOBAL IDENTITY  
IAM_ROLE 'arn:aws:iam::123456789012:role/AccountSecurityAdmin';  

ALTER USER alice SET GLOBAL IDENTITY  
IAM_ROLE 'arn:aws:iam::123456789012:role/Analyst';  

ALTER USER oscar SET GLOBAL IDENTITY  
IAM_ROLE 'arn:aws:iam::123456789012:role/Operator';  

-- Verify global identity settings.  
SET SESSION AUTHORIZATION sierra;  
SHOW GLOBAL IDENTITY;  

SET SESSION AUTHORIZATION alice;  
SHOW GLOBAL IDENTITY;  

SET SESSION AUTHORIZATION oscar;  
SHOW GLOBAL IDENTITY;  

-- Reset to default session.  
RESET SESSION AUTHORIZATION;
```

## 设置环境
<a name="federated-permissions-end-examples-environment"></a>

首先，创建表并在其中填充示例客户数据，以及创建用于治理策略的查找表。

```
-- Create the main customer table.  
CREATE TABLE db_name@catalog_name.public.customers (  
    id INTEGER,  
    name VARCHAR(50),  
    email VARCHAR(100),  
    region VARCHAR(20),  
    revenue DECIMAL(10,2)  
);  

-- Populate with sample customer data.  
INSERT INTO db_name@catalog_name.public.customers VALUES  
(1, 'John Smith', 'john@email.com', 'US', 1000.00),  
(2, 'Jane Doe', 'jane@email.com', 'EU', 500.00),  
(3, 'Mike Johnson', 'mike@email.com', 'US', 2000.00);  

-- Grant basic table access.  
GRANT ALL ON db_name@catalog_name.public.customers TO PUBLIC;  

-- Create lookup table for region-based policies.  
CREATE TABLE db_name@catalog_name.public.lookup_regions (  
    region_code VARCHAR(20),  
    allowed BOOLEAN  
);  

INSERT INTO db_name@catalog_name.public.lookup_regions VALUES   
('US', TRUE),   
('EU', FALSE),   
('APAC', TRUE);  

GRANT ALL ON db_name@catalog_name.public.lookup_regions TO PUBLIC;  

-- Create lookup table for revenue-based masking.  
CREATE TABLE db_name@catalog_name.public.lookup_revenue_tiers (base_revenue INTEGER);  

INSERT INTO db_name@catalog_name.public.lookup_revenue_tiers VALUES (1000), (2000);  
GRANT ALL ON db_name@catalog_name.public.lookup_revenue_tiers TO PUBLIC;
```

## 设置列级别权限（CLP）
<a name="federated-permissions-end-examples-clp"></a>

为不同用户配置列级别访问权限，用于控制用户可以访问哪些列。

```
-- Grant specific column access to Analyst i.e. `alice`.  
GRANT SELECT (id, region) ON db_name@catalog_name.public.customers  
    TO "IAMR:Analyst";  

-- Grant different column access to Operator i.e. `oscar`.  
GRANT SELECT (id, name, revenue) ON db_name@catalog_name.public.customers  
    TO "IAMR:operator";
```

## 创建行级别安全性（RLS）策略
<a name="federated-permissions-end-examples-rls"></a>

创建 RLS 策略，来根据用户的授权和数据条件控制用户可以查看哪些行。

```
-- Switch to admin user to create policies.  
SET SESSION AUTHORIZATION sierra;  

-- Create simple RLS policy: Analysts see only US customers.  
CREATE RLS POLICY db_name@catalog_name.us_only   
WITH (region VARCHAR(20))   
USING (region = 'US');  

-- Attach the policy to the Analyst i.e. `alice`.  
ATTACH RLS POLICY db_name@catalog_name.us_only   
ON db_name@catalog_name.public.customers   
TO "IAMR:Analyst";  

-- Enable row level security on the table.  
ALTER TABLE db_name@catalog_name.public.customers ROW LEVEL SECURITY ON;  

-- Create advanced RLS policy using lookup table.  
CREATE RLS POLICY db_name@catalog_name.region_lookup_policy  
WITH (region VARCHAR(20)) AS r  
USING (r.region IN (  
    SELECT region_code   
    FROM public.lookup_regions   
    WHERE allowed = TRUE  
));  

-- Attach the lookup-based policy to Operator i.e. `oscar`.  
ATTACH RLS POLICY db_name@catalog_name.region_lookup_policy   
ON db_name@catalog_name.public.customers   
TO "IAMR:Operator";
```

## 创建动态数据掩蔽（DDM）策略
<a name="federated-permissions-end-examples-ddm"></a>

创建掩蔽策略来根据用户角色和条件对敏感数据进行模糊处理。

```
-- Create masking policy for PII data (names and emails).  
CREATE MASKING POLICY db_name@catalog_name.mask_pii   
WITH (DATA VARCHAR(100))  
USING (SHA2(DATA + 'secret', 256)::TEXT);  

-- Attach masking to name and email columns for all users.  
ATTACH MASKING POLICY db_name@catalog_name.mask_pii   
ON db_name@catalog_name.public.customers (name)   
TO PUBLIC;  

ATTACH MASKING POLICY db_name@catalog_name.mask_pii   
ON db_name@catalog_name.public.customers (email)   
TO PUBLIC;  

-- Create conditional masking policy for revenue data.  
CREATE MASKING POLICY db_name@catalog_name.conditional_mask  
WITH (revenue DECIMAL(10,2))  
USING (CASE WHEN revenue IN (SELECT base_revenue  
                                    FROM public.lookup_revenue_tiers)  
            THEN revenue ELSE 0.00 END);  

-- Attach conditional masking to Analyst i.e. `alice` with priority.  
ATTACH MASKING POLICY db_name@catalog_name.conditional_mask   
ON db_name@catalog_name.public.customers (revenue)   
TO "IAMR:Analyst"   
PRIORITY 20;
```

## 审计可用/已应用的策略
<a name="federated-permissions-end-examples-audit"></a>

使用 SHOW 命令确认已正确配置治理策略。

```
-- Show all RLS policies in the database.  
SHOW RLS POLICIES FROM DATABASE db_name@catalog_name LIMIT 10;  

-- Show RLS policies for specific users and tables.  
SHOW RLS POLICIES ON db_name@catalog_name.public.customers FOR "IAMR:Analyst" LIMIT 10;  
SHOW RLS POLICIES ON db_name@catalog_name.public.customers FOR "IAMR:Operator" LIMIT 10;  
SHOW RLS POLICIES ON db_name@catalog_name.public.customers FOR PUBLIC LIMIT 10;  

-- Show all masking policies in the database.  
SHOW MASKING POLICIES FROM DATABASE db_name@catalog_name LIMIT 10;  

-- Show Masking policies for specific users and tables.  
SHOW MASKING POLICIES ON db_name@catalog_name.public.customers FOR "IAMR:Analyst" LIMIT 10;  
SHOW MASKING POLICIES ON db_name@catalog_name.public.customers FOR "IAMR:Operator" LIMIT 10;  
SHOW MASKING POLICIES ON db_name@catalog_name.public.customers FOR PUBLIC LIMIT 10;
```

## 测试访问模式
<a name="federated-permissions-end-examples-testing"></a>

测试根据用户的角色和应用的策略，不同用户会如何查看数据。

```
-- Test as analyst: Only US customers, only id/region columns,  
-- conditional revenue masking.  
SET SESSION AUTHORIZATION alice;  
SELECT id, region FROM db_name@catalog_name.public.customers ORDER BY id;  
SELECT id, region, revenue FROM db_name@catalog_name.public.customers ORDER BY id;  

-- Test as operator: Allowed regions only, masked names, specific columns.  
SET SESSION AUTHORIZATION oscar;  
SELECT id, name, revenue FROM db_name@catalog_name.public.customers ORDER BY id;  
SELECT id, name, region FROM db_name@catalog_name.public.customers ORDER BY id;  

-- Test as admin: Full access to all data.  
SET SESSION AUTHORIZATION sierra;  
SELECT * FROM db_name@catalog_name.public.customers ORDER BY id;
```

## 修改策略
<a name="federated-permissions-end-examples-alter"></a>

修改现有策略以更改其行为，而无需重新创建策略。

```
-- Switch back to admin user.  
SET SESSION AUTHORIZATION sierra;  

-- Alter the PII masking policy to use simple string replacement.  
ALTER MASKING POLICY db_name@catalog_name.mask_pii  
USING ('***MASKED***'::TEXT);  

-- Alter the conditional masking policy to use different threshold.  
ALTER MASKING POLICY db_name@catalog_name.conditional_mask  
USING (CASE WHEN revenue >= 500.00 THEN revenue ELSE -1.00 END);  

-- Alter the RLS policy to show only disallowed regions.  
ALTER RLS POLICY db_name@catalog_name.region_lookup_policy  
USING (r.region IN (  
    SELECT region_code   
    FROM db_name@catalog_name.public.lookup_regions   
    WHERE allowed = FALSE  
));
```

## 分离和删除策略
<a name="federated-permissions-end-examples-detach"></a>

删除不再需要的策略。

```
-- Detach RLS policies from users.  
DETACH RLS POLICY db_name@catalog_name.us_only   
ON db_name@catalog_name.public.customers   
FROM "IAMR:Analyst";  

DETACH RLS POLICY db_name@catalog_name.region_lookup_policy   
ON db_name@catalog_name.public.customers   
FROM "IAMR:Operator";  

-- Detach masking policies.  
DETACH MASKING POLICY db_name@catalog_name.mask_pii   
ON db_name@catalog_name.public.customers (name)   
FROM PUBLIC;  

DETACH MASKING POLICY db_name@catalog_name.mask_pii   
ON db_name@catalog_name.public.customers (email)   
FROM PUBLIC;  

DETACH MASKING POLICY db_name@catalog_name.conditional_mask   
ON db_name@catalog_name.public.customers (revenue)   
FROM "IAMR:Analyst";
```

## 清理：关闭 RLS 并删除策略
<a name="federated-permissions-end-examples-cleanup"></a>

```
-- Turn off Row-level security.  
ALTER TABLE db_name@catalog_name.public.customers ROW LEVEL SECURITY OFF;  

-- Drop policies.  
DROP RLS POLICY db_name@catalog_name.us_only CASCADE;  
DROP RLS POLICY db_name@catalog_name.region_lookup_policy CASCADE;  
DROP MASKING POLICY db_name@catalog_name.mask_pii CASCADE;  
DROP MASKING POLICY db_name@catalog_name.conditional_mask CASCADE;  

-- Drop tables.  
DROP TABLE db_name@catalog_name.public.customers;  
DROP TABLE db_name@catalog_name.public.lookup_regions;  
DROP TABLE db_name@catalog_name.public.lookup_revenue_tiers;
```

## 重置全局身份
<a name="federated-permissions-end-examples-global"></a>

```
-- TO rest the global identity.  
ALTER USER alice RESET GLOBAL IDENTITY;  
ALTER USER oscar RESET GLOBAL IDENTITY;  
ALTER USER sierra RESET GLOBAL IDENTITY;
```

# 联合用户配置
<a name="federated-permissions-user-cofig"></a>

借助 Amazon Redshift 联合身份验证权限，使用 IAM 或 IAM Identity Center（IdC）凭证进行身份验证的用户可以在其所有 Amazon Redshift 仓库中获得一致的体验。

当用户连接到任何 Redshift 集群时，其配置参数（例如日期格式、搜索路径和时区首选项）将自动应用到其会话。这样可以确保在所有集群中保持相同的用户体验而无需手动重新配置，从而提供无缝的个性化体验。

**示例**

以数据分析师 **Alex** 为例，他在主 Redshift 数据库中配置了首选的日期格式和时区。当 Alex 对主数据库运行查询时，所有日期值都以首选格式显示。

现在，当 Alex 连接到另一个 Redshift 仓库中**共享**或**自动挂载**的数据库时，还是会应用相同的首选项。Alex 以相同的日期格式和时区查看结果，从而确保在不同环境中获得一致的体验。

## 在 Amazon Redshift 仓库中保持一致的用户配置
<a name="federated-user-config-settings"></a>

对于使用 **IAM** 或 **AWS IAM Identity Center（IdC）**凭证进行身份验证的用户，以下**用户级[配置](https://docs.aws.amazon.com/redshift/latest/dg/cm_chap_ConfigurationRef.html)**会自动在各个 Redshift 集群之间同步：
+ [datestyle](https://docs.aws.amazon.com/redshift/latest/dg/r_datestyle.html)
+ [enable\$1case\$1sensitive\$1identifier](https://docs.aws.amazon.com/redshift/latest/dg/r_enable_case_sensitive_identifier.html)
+ [extra\$1float\$1digits](https://docs.aws.amazon.com/redshift/latest/dg/r_extra_float_digits.html)
+ [search\$1path](https://docs.aws.amazon.com/redshift/latest/dg/r_search_path.html)
+ [cast\$1super\$1null\$1on\$1error](https://docs.aws.amazon.com/redshift/latest/dg/r_cast_super_null_on_error.html)
+ [default\$1geometry\$1encoding](https://docs.aws.amazon.com/redshift/latest/dg/r_default_geometry_encoding.html)
+ [describe\$1field\$1name\$1in\$1uppercase](https://docs.aws.amazon.com/redshift/latest/dg/r_describe_field_name_in_uppercase.html)
+ [downcase\$1delimited\$1identifier](https://docs.aws.amazon.com/redshift/latest/dg/r_downcase_delimited_identifier.html)
+ [enable\$1case\$1sensitive\$1super\$1attribute](https://docs.aws.amazon.com/redshift/latest/dg/r_enable_case_sensitive_super_attribute.html)
+ [enable\$1numeric\$1rounding](https://docs.aws.amazon.com/redshift/latest/dg/r_enable_numeric_rounding.html)
+ [enable\$1result\$1cache\$1for\$1session](https://docs.aws.amazon.com/redshift/latest/dg/r_enable_result_cache_for_session.html)
+ [error\$1on\$1nondeterministic\$1update](https://docs.aws.amazon.com/redshift/latest/dg/r_error_on_nondeterministic_update.html)
+ [interval\$1forbid\$1composite\$1literals](https://docs.aws.amazon.com/redshift/latest/dg/r_interval_forbid_composite_literals.html)
+ [json\$1serialization\$1enable](https://docs.aws.amazon.com/redshift/latest/dg/r_json_serialization_enable.html)
+ [json\$1serialization\$1parse\$1nested\$1strings](https://docs.aws.amazon.com/redshift/latest/dg/r_json_serialization_parse_nested_strings.html)
+ [mv\$1enable\$1aqmv\$1for\$1session](https://docs.aws.amazon.com/redshift/latest/dg/r_mv_enable_aqmv_for_session.html)
+ [navigate\$1super\$1null\$1on\$1error](https://docs.aws.amazon.com/redshift/latest/dg/r_navigate_super_null_on_error.html)
+ [parse\$1super\$1null\$1on\$1error](https://docs.aws.amazon.com/redshift/latest/dg/r_parse_super_null_on_error.html)
+ [spectrum\$1enable\$1pseudo\$1columns](https://docs.aws.amazon.com/redshift/latest/dg/r_spectrum_enable_pseudo_columns.html)
+ [enable\$1spectrum\$1oid](https://docs.aws.amazon.com/redshift/latest/dg/r_spectrum_enable_spectrum_oid.html)
+ [spectrum\$1query\$1maxerror](https://docs.aws.amazon.com/redshift/latest/dg/r_spectrum_query_maxerror.html)
+ [stored\$1proc\$1log\$1min\$1messages](https://docs.aws.amazon.com/redshift/latest/dg/r_stored_proc_log_min_messages.html)
+ [analyze\$1threshold\$1percent](https://docs.aws.amazon.com/redshift/latest/dg/r_analyze_threshold_percent.html)
+ [enable\$1vacuum\$1boost](https://docs.aws.amazon.com/redshift/latest/dg/r_enable_vacuum_boost.html)
+ [pg\$1federation\$1repeatable\$1read](https://docs.aws.amazon.com/redshift/latest/dg/r_pg_federation_repeatable_read.html)

## 连接和配置管理
<a name="federated-user-config-management"></a>
+ 使用 **JDBC** 连接到 Amazon Redshift 时，也可能会自动应用某些**会话级配置**。有关详细信息，请参考 JDBC 会话级配置文档。
+ 用户还可以使用 [ALTER USER](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_USER.html) 定义持久的**用户级配置**。

# 禁用 AWS IAM Identity Center 传播
<a name="federated-permissions-offboarding"></a>

在禁用 AWS IAM Identity Center 传播之前，您必须先将 Amazon Redshift 集群或 Amazon Redshift Serverless 命名空间注册到 AWS Glue Data Catalog，并与 Lakehouse 类型的 Redshift IdC 应用程序关联。Amazon Redshift Serverless 命名空间需要连接工作组才能执行相关操作。

## 为 Amazon Redshift 预调配集群禁用 AWS IAM Identity Center 身份传播
<a name="federated-permissions-offboarding-clusters"></a>

在为 Amazon Redshift 预调配集群禁用 AWS IAM Identity Center 身份传播时，与其连接的 Lakehouse 类型的 Redshift IdC 应用程序将在集群中标记为禁用。

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

您可以使用 `modify-lakehouse-configuration` 命令为具有 Redshift 联合身份验证权限的集群禁用 IdC 身份传播，请注意，此操作不会从集群中删除 IdC 提供程序，而是将其置于禁用模式。

```
aws redshift modify-lakehouse-configuration \
    --cluster-identifier 'redshift-cluster' \
    --lakehouse-idc-registration Disassociate \
```

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

1. 登录到 AWS 管理控制台并打开 Amazon Redshift 控制台，网址：[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)。

1. 导航到要编辑注册信息的预调配集群，然后将其选中。

1. 在集群的详细信息页面上，从**操作**下拉菜单中选择**编辑 AWS Glue Data Catalog 注册**。

1. 使用 AWS IAM Identity Center 下拉菜单，对 Amazon Redshift 联合身份验证权限选择**禁用**来取消关联 IdC 应用程序，然后选择**保存更改**。

------

## 禁用 Amazon Redshift Serverless 命名空间的 AWS IAM Identity Center 身份传播
<a name="federated-permissions-offboarding-namespace"></a>

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

您可以使用 `modify-lakehouse-configuration` 命令为具有 Redshift 联合身份验证权限的命名空间禁用 IdC 身份传播，请注意，此操作不会从集群中删除 IdC 提供程序，而是将其置于禁用模式。

```
aws redshift-serverless update-lakehouse-configuration \
--namespace-name 'serverless-namespace-name' \
--lakehouse-idc-registration Disassociate \
```

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

1. 登录到 AWS 管理控制台并打开 Amazon Redshift 控制台，网址：[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)。

1. 导航到要编辑注册信息的 Serverless 命名空间，然后将其选中。

1. 在命名空间的详细信息页面上，从**操作**下拉菜单中选择**编辑 AWS Glue Data Catalog 注册**。

1. 使用 AWS IAM Identity Center 下拉菜单，对 Amazon Redshift 联合身份验证权限选择**禁用**来取消关联 IdC 应用程序，然后选择**保存更改**。

------

# 从 AWS Glue Data Catalog 中注销
<a name="federated-permisisons-offboarding-deregister-catalog"></a>

## 注销 Amazon Redshift 联合身份验证权限的 IAM 策略要求
<a name="federated-permisisons-offboarding-deregister-catalog-iam-reqs"></a>

 要从 AWS Glue Data Catalog 中注销集群或 Serverless 命名空间，需要以下 IAM 权限。

对于 Redshift 预调配集群
+ `redshift:ModifyLakehouseConfiguration`
+ `redshift:DregisterNamespace`

对于 Redshift Serverless
+ `redshift-serverless:UpdateLakehouseConfiguration`
+ `redshift:DregisterNamespace`

对于 AWS Glue Data Catalog 集成
+ `glue:DeleteCatalog`
+ `glue:GetCatalog`

对于 Lake Formation 资源注册
+ `lakeformation:DeregisterResource`

## 从 AWS Glue Data Catalog 中注销 Redshift
<a name="federated-permisisons-offboarding-deregister-catalog-provisioned"></a>

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

您可以使用 `modify-lakehouse-configuration` 命令从 AWS Glue Data Catalog 中注销集群，如果集群关联了 IdC 提供程序，这会在集群中将 IdC 提供程序置于禁用模式。

```
aws redshift modify-lakehouse-configuration \
--cluster-identifier 'redshift-cluster' \
--lakehouse-registration Deregister
```

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

1. 登录到 AWS 管理控制台并打开 Amazon Redshift 控制台，网址：[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)。

1. 导航到要注销的预调配集群，然后将其选中。

1. 在集群的详细信息页面上，从**操作**下拉菜单中选择**从 AWS Glue Data Catalog 中注销**，然后选择**注销**。

------

## 从 AWS Glue Data Catalog 中注销 Redshift Serverless 命名空间
<a name="federated-permisisons-offboarding-deregister-catalog-namespace"></a>

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

您可以使用 `update-lakehouse-configuration` 命令从 AWS Glue Data Catalog 中注销 Redshift Serverless 命名空间，如果集群关联了 IdC 提供程序，这会在集群中将 IdC 提供程序置于禁用模式。

```
aws redshift modify-lakehouse-configuration \
--cluster-identifier 'redshift-cluster' \
--lakehouse-registration Deregister
```

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

1. 登录到 AWS 管理控制台并打开 Amazon Redshift 控制台，网址：[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)。

1. 导航到要注销的 Serverless 命名空间，然后将其选中。

1. 在集群的详细信息页面上，从**操作**下拉菜单中选择**从 AWS Glue Data Catalog 中注销**，然后选择**注销**。

------