本文为您介绍如何使用角色SSO的方式访问Hologres。
背景信息
阿里云支持企业用户通过在阿里云控制台输入账号、密码后登录阿里云来管理和使用云资源。随着企业安全监管要求的日益严格,部分企业更愿意通过角色登录(Role Base_SSO)的方式登录阿里云。详情请参见SAML角色SSO概览。
适用场景
一般情况下,对于阿里云企业用户,需要用户通过在阿里云控制台输入账号、密码后登录阿里云来管理和使用云资源。但是随着企业安全监管要求的日益严格,希望集中管理登录鉴权信息,企业往往会选择单点登录(SSO)的方式登录应用。SSO是指在多个应用系统中,用户只需要登录一次,就可以访问所有相互信任的应用系统。现在Hologres支持基于角色的SSO登录模式,详情请参见SAML角色SSO概览。基于该功能,您可以使用企业账号,扮演RAM角色访问Hologres实例。具体的访问权限由RAM角色控制。一个调用的样例如下。
用户使用浏览器在Idp的登录页面中选择阿里云作为目标服务。
例如:如果企业IdP使用AD FS(Microsoft Active Directory Federation Service),则登录URL为:https://ADFSServiceName/adfs/ls/IdpInitiatedSignOn.aspx。
说明有些IdP会要求用户先登录,再选择代表阿里云的SSO应用。
IdP生成一个SAML响应并返回给浏览器。
浏览器重定向到SSO服务页面,并转发SAML响应给SSO服务。
SSO服务使用SAML响应向阿里云STS服务请求临时安全凭证,并生成一个可以使用临时安全凭证登录阿里云控制台的URL。
说明如果SAML响应中包含映射到多个RAM角色的属性,系统将会首先提示用户选择一个用于访问阿里云的角色。
SSO服务将URL返回给浏览器。
浏览器重定向到该URL,以指定RAM角色登录到阿里云控制台,用户使用企业账户扮演RAM角色登录Hologres实例。
Hologres支持的用户访问方式
Hologres支持如下两种访问方式:
通过云账号(阿里云账号或RAM用户)访问Hologres。
您可以通过输入账号、密码的方式登录阿里云管理控制台,并以当前登录账号的身份使用Hologres。此时,阿里云账号将成为Hologres某个实例的成员,拥有Hologres产品的使用权限。
通过RAM角色SSO的方式登录Hologres。
您也可以通过角色SSO的方式(SAML角色SSO概览)登录阿里云,并使用Hologres。此时,阿里云访问控制角色(RAM Role)将成为Hologres某个实例的成员,扮演该RAM Role的使用者将拥有和云账号类成员同样的产品使用权限。RAM角色的描述,详情请参见RAM角色概览。
对于Hologres来说,RAM角色(RAM Role)和阿里云账号(包括主账号和RAM用户)是同等地位的账号。因此,对于Hologres来说,RAM角色就是一个普通的可登录账号。Superuser需要对这个RAM角色(而不是背后的云账号)进行授权来赋予这个RAM角色权限(SELECT/INSERT/UPDATE等),这个RAM角色才能在权限范围内使用Hologres。
RAM角色SSO(STS)介绍
通过RAM角色SSO的方式登录并访问Hologres是基于阿里云STS服务实现的。阿里云STS(Security Token Service)是为阿里云账号(或RAM用户)提供短期访问权限管理的云服务。通过STS,您可以为用户(您的本地账号系统所管理的用户)颁发一个自定义时效和访问权限的访问凭证。用户可以使用STS短期访问凭证直接连接Hologres并访问被授权的资源。
使用STS Token有以下优势:
减少了账号AccessKey ID和AccessKey Secret泄露的风险,只需要生成一个临时访问凭证给用户使用即可。
能使用灵活的权限控制,STS Token有一定的时间期限,不需要关心权限撤销问题,临时访问凭证过期后会自动失效。
如下操作步骤将指导您通过创建RAM角色并授权访问Hologres。
步骤一:创建RAM角色
登录访问控制,创建RAM角色。当前可信实体类型,可以选择阿里云账号或者身份提供商。
如果需要通过阿里云管理控制台切换身份方式扮演该角色,选择阿里云账号类型的角色。具体操作请参见通过RAM用户扮演角色并添加权限。
如果需要通过本地IDP身份提供商账号登录至阿里云扮演该角色,选择身份提供商类型的角色。具体操作请参见通过IDP身份提供商账号来扮演角色并添加权限。
通过RAM用户扮演角色并添加权限
如果需要通过RAM用户来扮演RAM角色并基于阿里云控制台切换身份方式扮演该角色,请登录访问控制,创建RAM角色。当前可信实体类型,可以选择阿里云账号。
创建可信实体类型为阿里云账号的RAM角色。
登录访问控制,在左侧导航栏,单击身份管理>角色。
在角色页面,单击创建角色,当前可信实体类型选择阿里云账号。
单击下一步,配置角色名称,并选择当前云账号。
单击完成,页面提示角色创建成功完成创建。
创建并添加权限策略。
在RAM角色管理列表页,单击目标角色名称,进入角色信息详情页。
选择信任策略页签,单击编辑信任策略修改信任策略为如下脚本内容。
参数说明
在策略配置时,您需要将如下脚本中的
acs:ram::主账号ID:root
信息中的主账号ID,替换为需要授权的账号信息。请前往用户信息页面,获取账号ID。脚本配置
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::主账号ID:root" ] } }, { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "dataworks.aliyuncs.com" ] } } ], "Version": "1" }
单击保存信任策略,完成权限策略配置。
创建RAM用户并授予角色权限。
通过IDP身份提供商账号来扮演角色并添加权限
如果需要通过本地IDP身份提供商账号登录至阿里云扮演RAM角色,请登录访问控制,创建RAM角色。当前可信实体类型,可以选择身份提供商。
创建可信实体类型为身份提供商的RAM角色。
登录访问控制在左侧导航栏,单击身份管理 > 角色。
在角色页面,单击创建角色,当前可信实体类型选择身份提供商。
单击下一步,配置角色名称和备注。
选择身份提供商类型、选择身份提供商并查看限制条件后,单击完成,页面提示角色创建成功完成创建。
创建并添加权限策略。
在角色列表页,单击目标角色名称,进入角色信息详情页。
选择信任策略页签,单击编辑信任策略,修改新任策略为如下脚本内容。
参数说明
在策略配置时,您需要将如下脚本中的
acs:ram::主账号ID:saml-provider/IDP
信息中的主账号ID,替换为需要授权的账号信息。请前往用户信息页面,获取账号ID。脚本配置
"Statement": [ { "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "saml:recipient": "https://signin.aliyun.com/saml-role/sso" } }, "Effect": "Allow", "Principal": { "Federated": [ "acs:ram::主账号ID:saml-provider/IDP" ] } }, { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "dataworks.aliyuncs.com" ] } } ], "Version": "1" } }
单击保存信任策略,完成权限策略配置。
步骤二:添加RAM角色至Hologres实例并授权
RAM角色需要有Hologres实例的开发权限,才能在权限范围内使用Hologres。由于RAM角色默认没有Hologres管控台的查看和操作实例的权限,因此需要主账号完成RAM相关权限授予才能进行后续操作。具体操作,请参见授予RAM用户权限。添加RAM角色至Hologres实例,您可以通过如下方式进行授权。
登录Hologres管理控制台进行授权。
在左侧导航栏选择进入实例列表页面,单击需要授权的实例,在用户管理页签找到RAM角色并新增用户至实例。
在DB管理页签,为该RAM用户授予具体的实例开发权限。
通过SQL方式授权。
您可以通过SQL方式进行授权,具体请参见权限管理概述。
若是通过RAM用户扮演RAM角色,RAM角色默认没有Hologres管理控制台的权限,需要主账号给RAM用户在访问控制页面授予AliyunRAMReadOnlyAccess权限,否则RAM角色无法在Hologres管理控制台进行任何操作。详情请参见文档授予RAM用户权限。
步骤三:登录阿里云并使用Hologres
当您完成授权之后,使用者就可以扮演user-role角色登录并使用Hologres。
登录阿里云。使用者可以扮演RAM角色user-role,登录至阿里云控制台。
登录Hologres管理控制台,进行实例管理和监控。
在Hologres管理控制台单击登录Hologres数据库,进入HoloWeb,进行Hologres结构设计和数据开发。具体操作请参见连接HoloWeb并执行查询。