

 从补丁 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="redshift-iam-access-control-native-idp-autocreate"></a>

借助此特征，您可以根据身份提供者（IdP）的组成员资格在 Redshift 中自动创建角色。自动创建角色支持具有本机 IdP 集成的 Azure Active Directory。

自动创建角色有几个好处。自动创建角色时，Redshift 会在您的 IdP 中创建具有组成员资格的角色，因此您可以避免繁琐的手动角色创建和维护。还可以选择筛选映射到 Redshift 角色的组。

## 工作原理
<a name="sso-autocreate-overview"></a>

当您以 IdP 用户身份登录 Redshift 时，会发生以下一系列事件：

1. Redshift 从 IdP 那里检索您的组成员资格。

1. Redshift 使用角色格式 `{{idp_namespace}}:{{rolename}}` 自动创建映射到这些组的角色。

1. Redshift 授予您使用映射角色的权限。

每次用户登录时，都会自动创建目录中不存在但该用户所属的每个组。您可以选择设置包括和排除筛选条件，从而控制哪些 IdP 组已创建 Redshift 角色。

## 配置自动创建角色
<a name="sso-autocreate-configuring"></a>

使用 `CREATE IDENTITY PROVIDER` 和 `ALTER IDENTITY PROVIDER` 命令启用和配置自动角色创建。

```
-- Create a new IdP with auto role creation enabled
CREATE IDENTITY PROVIDER <{{idp_name}}> TYPE azure
  NAMESPACE '<{{namespace}}>' 
  APPLICATION_ARN '{{app_arn}}'
  IAM_ROLE '{{role_arn}}'
  AUTO_CREATE_ROLES TRUE; 

-- Enable on existing IdP 
ALTER IDENTITY PROVIDER <{{idp_name}}>
  AUTO_CREATE_ROLES TRUE;

-- Disable  
ALTER IDENTITY PROVIDER <{{idp_name}}>
  AUTO_CREATE_ROLES FALSE;
```

## 筛选组
<a name="sso-autocreate-filtering"></a>

您可以选择使用 `INCLUDE` 和 `EXCLUDE` 模式筛选映射到 Redshift 角色的 IdP 组。当模式冲突时，`EXCLUDE` 优先于 `INCLUDE`。

```
-- Only create roles for groups with 'dev' 
CREATE IDENTITY PROVIDER <{{idp_name}}> TYPE azure
  ...
  AUTO_CREATE_ROLES TRUE
  INCLUDE GROUPS LIKE '%dev%';
    
-- Exclude 'test' groups
ALTER IDENTITY PROVIDER <{{idp_name}}> 
  AUTO_CREATE_ROLES TRUE
  EXCLUDE GROUPS LIKE '%test%';
```

## 示例
<a name="sso-autocreate-filtering"></a>

以下示例说明了如何启用自动创建角色而不进行筛选。

```
CREATE IDENTITY PROVIDER prod_idc TYPE azure ...
  AUTO_CREATE_ROLES TRUE;
```

以下示例包括开发组，不包括测试组。

```
ALTER IDENTITY PROVIDER prod_idc
  AUTO_CREATE_ROLES TRUE
  INCLUDE GROUPS LIKE '%dev%'
  EXCLUDE GROUPS LIKE '%test%';
```

## 最佳实践
<a name="sso-autocreate-bp"></a>

为角色启用自动创建功能时，请考虑遵循以下最佳实践：
+ 使用 `INCLUDE` 和 `EXCLUDE` 筛选条件来控制哪些组获得角色。
+ 定期审核角色并清理未使用的角色。
+ 利用 Redshift 角色层次结构来简化权限管理。