使用 IAM 身份中心 API 进行应用程序分配的审计和管理 安全博客
IAM身份中心API的应用审核与管理
重点内容
使用AWS IAM身份中心API可有效审计和管理用户及组对AWS管理应用的访问权限。此方法简化了用户和组的分配管理,支持自动化及更大规模的操作。本文涵盖了使用这些API的步骤,包括创建、删除用户组及其在Amazon Redshift应用中的分配。您现在可以使用AWS IAM身份中心的应用分配API,以编程方式管理和审核用户及组对AWS管理应用的访问权限。过去,您必须通过IAM身份中心控制台手动分配用户和组给应用。而现在,您可以自动化此任务,使您的组织能够更有效地扩展。
在本文中,我们将向您展示如何使用IAM身份中心API以编程方式管理和审核用户和组的应用访问权限。我们所分享的流程适用于IAM身份中心的组织实例和账户实例。
自动管理用户和组对应用的分配
IAM身份中心是您创建或连接您的员工用户的地方,您可以一次性管理他们对多个AWS账户和应用的访问权限。您可以通过相关应用控制台直接配置AWS管理应用与IAM身份中心的工作,以及管理需要访问相应应用的用户或组的权限。
您可以使用账户分配API自动化多账户访问和审核分配给用户的访问权限,使用IAM身份中心的权限集。如今,我们通过新的应用分配API扩展了此功能。您可以使用这些新API以编程方式控制应用分配并开发自动化审计工作流。
AWS管理应用直接从IAM身份中心访问用户和组信息。例如,当您将Amazon Redshift配置为使用IAM身份中心的AWS管理应用时,组织中用户的组成员资格可以映射到Amazon Redshift数据库角色,从而授予他们特定的权限。这样,您可以更简单地管理用户,因为您无需为每个用户单独设置数据库对象的权限。有关更多信息,请参见Redshift与AWS IAM身份中心集成的好处。
配置好IAM身份中心与Amazon Redshift之间的集成后,您可以通过使用DeleteApplicationAssignment和CreateApplicationAssignment API来自动分配或移除用户和组,如图1所示。
在本节中,您将学习如何使用身份中心API将一个组分配给Amazon Redshift应用。您还将学习如何删除组的分配。
前提条件
在遵循本演示之前,请确保您已完成以下前提条件:
启用IAM身份中心,并使用Identity Store管理您的身份数据。如果您使用外部身份提供者,应在这些系统中处理用户创建和删除过程。将Amazon Redshift配置为使用IAM身份中心作为其身份来源。默认情况下,使用IAM身份中心作为其身份来源的应用需要显式分配。这意味着您必须在身份中心控制台或API中显式地分配用户给该应用。安装并配置AWS命令行界面AWS CLI版本2。在此示例中,您将使用AWS CLI v2调用IAM身份中心应用分配API。有关详细信息,请参见安装AWS CLI和配置AWS CLI。步骤1:获取您的身份中心实例信息
第一步是运行以下命令以获取您正在使用的实例的Amazon资源名称ARN和身份存储ID:
bashaws ssoadmin listinstances
输出结果类似于以下内容:
json{ Instances [ { InstanceArn arnawsssoinstance/ssoins IdentityStoreId d OwnerAccountId Name MyInstanceName CreatedDate 20231008T1645198390000400 State { Name ACTIVE } Status ACTIVE } ] NextToken ltltTOKENgtgt}
请注意IdentityStoreId和InstanceArn您将在后续步骤中使用这两个值。
步骤2:在身份存储中创建用户和组
接下来,您需要在身份存储中创建一个用户和一个组。
注意:如果您在身份中心实例中已经有组,请获取其GroupId,然后继续进行步骤3。要获取GroupId,请运行以下命令:
bashaws identitystore getgroupid identitystoreid “d” alternateidentifier “GroupName”
使用您在前一步中记录的IdentityStoreId创建一个新用户。
bashaws identitystore createuser identitystoreid d username MyUser emails Value=MyUser@examplecomType=WorkPrimary=true displayname My User name FamilyName=UserGivenName=My
输出结果应与以下相似:
白鲸加速器最新版下载安装json{ UserId IdentityStoreId d}
在您的身份存储中创建一个组:
bashaws identitystore creategroup identitystoreid d displayname engineering
请在输出中注意GroupId您将在步骤4创建应用程序分配时需要它:
json{ GroupId IdentityStoreId d}
运行以下命令将用户添加到组中:
bashaws identitystore creategroupmembership identitystoreid d groupid memberid UserId=
结果将类似于以下内容:
json{ MembershipId IdentityStoreId d}
步骤3:获取您的Amazon Redshift应用ARN实例
接下来,您需要确定应用ARN。要获取ARN,请运行以下命令。
bashaws ssoadmin listapplications instancearn arnawsssoinstance/ssoins
如果您环境中有多个应用,请使用过滤标志指定应用账户或应用提供者。有关过滤选项的更多信息,请参见ListApplications API文档。
在此示例中,我们只有一个应用:Amazon Redshift。响应结果应类似于以下内容。请注意ApplicationArn您将在下一步中需要它。
json{ ApplicationArn arnawsssoinstance/ssoins/apl ApplicationProviderArn arnawsssoawsapplicationProvider/Redshift Name Amazon Redshift InstanceArn arnawsssoinstance/ssoins Status DISABLED PortalOptions { Visible true Visibility ENABLED SignInOptions { Origin IDENTITYCENTER } } AssignmentConfig { AssignmentRequired true } Description Amazon Redshift CreatedDate 20231009T1048444960000700}
步骤4:将您的组添加到Amazon Redshift应用中
现在,您可以将新组添加到由IAM身份中心管理的Amazon Redshift应用中。principalid是您在步骤2中创建的GroupId。
bashaws ssoadmin createapplicationassignment applicationarn arnawsssoinstance/ssoins/apl principalid principaltype GROUP
组现在已获得对Amazon Redshift的访问权限,但只有Amazon Redshift中的默认权限。要授予对数据库的访问权限,您可以创建控制对一组表或视图权限的角色。
要在Amazon Redshift中创建这些角色,您需要连接到您的集群并运行SQL命令。要连接到您的集群,可以使用以下选项之一:
通过查询编辑器版本2连接到Amazon Redshift通过Java数据库连接JDBC、开放数据库连接ODBC或基于Python的工具连接到Amazon Redshift图2展示了通过查询编辑器v2连接到Amazon Redshift的画面。
在默认情况下,所有用户在数据库的PUBLIC模式下都有CREATE和USAGE权限。要禁止用户在数据库的PUBLIC模式下创建对象,请使用REVOKE命令删除该权限。有关更多信息,请参见默认数据库用户权限。
作为Amazon Redshift数据库管理员,您可以创建角色,其中角色名称包含身份提供者命名空间前缀和组或用户名。要执行此操作,请使用以下语法:
sqlCREATE ROLE ltidentitycenternamespacerolenamegt
rolename需要与IAM身份中心中的组名称匹配。Amazon Redshift会自动将IAM身份中心的组或用户映射到先前创建的角色。要扩展用户的权限,请使用GRANT命令。
identityprovidernamespace是在您创建Amazon Redshift与IAM身份中心之间的集成时分配的。它表示您组织的名称,并作为前缀添加到IAM身份中心管理的用户和Redshift数据库中的角色。
您的语法应类似于以下内容:
sqlCREATE ROLE ltAWSIdentityCenterMyGroupgt
步骤5:移除应用分配
如果您决定新组不再需要访问Amazon Redshift应用,但仍希望将其保留在IAM身份中心实例中,请运行以下命令:
bashaws ssoadmin deleteapplicationassignment applicationarn arnawsssoinstance/ssoins/apl principalid principaltype GROUP
注意:删除组的应用分配不会将该组从您的身份中心实例中移除。
在删除或添加用户分配时,建议您查看应用的文档,因为您可能需要采取额外步骤以完全接纳或移除特定用户或组。例如,当您删除用户或组分配时,还必须在Amazon Redshift中移除相应的角色。您可以使用DROP ROLE命令完成此操作。有关更多信息,请参见管理数据库安全性。
审计用户和组对应用的访问
现在让我们考虑如何使用新API帮助您审核应用分配。在之前的示例中,您使用AWS CLI创建和删除了对Amazon Redshift的分配。现在,我们将向您展示如何使用新的ListApplicationAssignments API列出当前分配给您的Amazon Redshift应用的组。
bashaws ssoadmin listapplicationassignments applicationarn arnawsssoapplication/ssoins/apl
输出应类似于以下内容在此情况下,您有一个单独的组分配给该应用。
json{ ApplicationAssignments [ { ApplicationArn arnawsssoapplication/ssoins/apl PrincipalId PrincipalType GROUP } ]}
要查看组成员资格,请使用PrincipalId信息查询Identity Store并获取与组相关联的用户的信息,结合使用ListGroupMemberships和DescribeGroupMembershipAPI。
如果您有多个IAM Identity Center管理的应用,您还可以创建一个脚本来自动审核这些应用。您可以在环境中的AWS Lambda函数中定期运行此脚本,以维护对添加到每个应用的成员的监督。
要获取该用例的脚本,请访问multipleinstancemanagementiamidentitycenter GitHub存储库。该存储库包括在AWS Organizations委托管理员账户中使用Lambda部署脚本的说明。部署后,您可以调用Lambda函数获取每个IAM身份中心实例的csv文件,对应于每个实例中分配的应用及其访问这些应用的用户。
结论
在本文中,您了解了如何使用IAM身份中心应用分配API将用户分配给Amazon Redshift以及在用户不再属于组织时将其从应用中移除。您还学习了如何列出每个账户中部署的应用以及分配给这些应用的用户。
要了解有关IAM身份中心的更多信息,请参阅AWS IAM身份中心用户指南。要测试应用分配API,请参阅SSOadmin API参考指南。

如果您对本文有反馈,请在下面的评论部分提交。对于有关本文的问题,请在AWS IAM身份中心 rePost上开启新线程或联系AWS支持。
想要获取更多AWS安全新闻?请在Twitter上关注我们。
作者简介
Laura ReithLaura是AWS的身份解决方案架构师,她热衷于帮助客户克服安全和身份挑战。在她的空闲时间,她喜欢潜水和环游世界。
Steve PascoeSteve是AWS身份团队的高级技术产品经理。他乐于为客户提供创造性和独特的日常问题解决方案。除此之外,他喜欢和家人一起通过乐高、木工以及最近的3D打印来构建东西。
Sowjanya RajavaramSowjanya是AWS的高级解决方案架构师,专注于身份和安全。她的整个职业生涯都致力于帮助各类客户解决他们的身份和访问管理问题。她喜欢旅行并体验不同的文化和美食。
标签 AWS IAM身份中心、[安全博客](