帮助文档 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
帮助文档 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. Serverless应用引擎(新版)
  4. 操作指南
  5. 应用部署
  6. 设置身份认证服务功能

设置身份认证服务功能

  • 应用部署
  • 发布于 2025-04-17
  • 0 次阅读
文档编辑
文档编辑

基于适用于服务账户的RAM角色(简称RRSA)功能,可以在实例维度实现OpenAPI权限的细粒度隔离,从而更精细地控制云资源访问权限。相比于直接使用密钥对来访问阿里云OpenAPI,使用RRSA可以有效防止AK泄露问题,降低安全风险。本文将以Serverless 应用引擎首次使用RRSA功能为例进行介绍。

测试代码

本文以深圳地域的Java应用为例演示如何通过OIDC调用阿里云SAE服务的接口。

  • 在pom.xml文件中引入以下依赖项。

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>sae20190506</artifactId>
        <version>1.25.0</version>
    </dependency>
    
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>sts20150401</artifactId>
        <version>1.1.4</version>
    </dependency>
    
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>credentials-java</artifactId>
        <version>0.3.4</version>
    </dependency>
  • 测试代码如下所示。

    public static void main(String[] args) throws Exception {
        Client cred = newOidcCred();
        callAPI(cred);
    }
        
    public static void callAPI(com.aliyun.credentials.Client cred) throws Exception {
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
        config.credential = cred;
        // 将cn-shenzhen修改为对应的Region。
        config.endpoint = "sae-vpc.cn-shenzhen.aliyuncs.com";
    
        // 初始化客户端。这个客户端是用于调用阿里云SAE服务API的。
        com.aliyun.sae20190506.Client client = new com.aliyun.sae20190506.Client(config);
    
        // 调用阿里云SAE服务的OpenAPI来获取集群列表。
        com.aliyun.sae20190506.models.ListApplicationsRequest listApplicationsRequest = new com.aliyun.sae20190506.models.ListApplicationsRequest();
        ListApplicationsResponse listApplicationsResponse = client.listApplications(listApplicationsRequest);
        System.out.println("listApplicationsResponse->" + JSON.toJSONString(listApplicationsResponse));
    }
    
    private static com.aliyun.credentials.Client newOidcCred() throws Exception {
        // 创建OIDC凭证。
        com.aliyun.credentials.models.Config credConf = new com.aliyun.credentials.models.Config();
        credConf.type = "oidc_role_arn";
        credConf.roleArn = System.getenv("ALIBABA_CLOUD_ROLE_ARN");
        credConf.oidcProviderArn = System.getenv("ALIBABA_CLOUD_OIDC_PROVIDER_ARN");
        credConf.oidcTokenFilePath = System.getenv("ALIBABA_CLOUD_OIDC_TOKEN_FILE");
        credConf.roleSessionName = "test-rrsa-oidc-token";
        // https://next.api.aliyun.com/product/Sts,通过此链接可以帮助您了解更多关于STS服务的详细信息和使用方法。
         credConf.setSTSEndpoint("sts-vpc.cn-shenzhen.aliyuncs.com");
        return new com.aliyun.credentials.Client(credConf);
    }
    重要
    • 测试代码中,ALIBABA_CLOUD_ROLE_ARN、ALIBABA_CLOUD_OIDC_PROVIDER_ARN和ALIBABA_CLOUD_OIDC_TOKEN_FILE几个环境变量已经内置在了SAE中,可以直接获取。使用这些环境变量进行身份验证后,请求能够成功返回ACS集群列表。

    • 在使用newOidcCred返回的com.aliyun.credentials.Client时,由于该客户端会请求RAM接口以获取临时Token,而此Token的有效期为1小时。因此,建议您自行实现缓存机制,以避免在高流量情况下频繁请求RAM接口,从而可能触发限流问题。

前提条件

  • 您的阿里云账号已进行了实名认证。具体操作,请参见个人实名认证或企业实名认证。

    重要

    访问控制为免费产品,只要经过实名认证的阿里云账号就可以直接使用,该产品暂不支持关闭。

  • 已创建命名空间。具体操作,请参见管理命名空间。

步骤一:开启RRSA OIDC

在创建应用过程中开启RRSA OIDC

  1. 登录SAE控制台,在左侧导航栏选择应用管理 > 应用列表,然后选择目标地域和目标命名空间,最后单击创建应用。

    image

    说明

    本文只介绍开启RRSA OIDC的步骤。创建应用的详细步骤,请参见应用部署。

  2. 在创建应用的高级设置页面。找到并展开身份认证服务区域,然后开启 RRSA OIDC。

    pBMaDKigq8

在部署应用过程中开启RRSA OIDC

警告

修改应用配置后,该应用将会被重启。为避免业务中断等不可预知的错误,请在业务低峰期进行操作。

  1. 登录SAE控制台,在左侧导航栏选择应用管理 > 应用列表,然后选择目标地域和目标命名空间,最后单击目标应用名称。

  2. 在目标应用的基础信息页面,单击部署应用。

    wYZsdfSTz7

  3. 在部署应用面板,找到并展开身份认证服务区域,然后开启 RRSA OIDC。

    AhRwUK3Bgs

步骤二:创建RAM角色

查看系统创建的身份供应商角色

  1. 在身份认证服务区域单击创建RAM角色,进入RAM控制台。

    BP6hYD5ksn

  2. 在RAM控制台的左侧导航栏,单击SSO 管理。

  3. 在SSO 管理页面的OIDC页签,查看系统自动创建的身份供应商角色。

    Kc5aV6T6WP

    重要
    • 当您在SAE侧开启RRSA OIDC后,系统会自动创建一个身份供应商角色,此身份供应商角色名称的格式为sae-rrsa-{regionId},且该名称不可修改。

    • 在同一地域下,如果您是在SAE侧第一次使用身份认证服务功能,系统会自动为您创建一个身份提供商角色。如果您不是第一次使用此功能,系统将不会再次创建新的身份提供商角色,但您可以继续使用之前自动创建的身份提供商角色。

创建RAM角色并为其授权

  1. 在RAM控制台的左侧导航栏,单击角色,然后在角色页面,单击创建角色。

    DNAwUON00z

  2. 在创建角色页面,配置以下信息。

    1. 在选择类型向导页面,选择可信实体类型为身份提供商,然后单击下一步。

      ueLoWopSMZ

    2. 在配置角色向导页面,根据以下说明配置相关信息,然后单击完成。

      kx0fvGJUK2

      配置项

      示例

      说明

      角色名称

      sae-test

      自定义RAM角色名称。

      身份提供商类型

      OIDC

      在下拉框中选择身份供应商类型为OIDC。

      选择身份提供商

      sae-rrsa-cn-shenzhen

      选择系统自动创建的身份提供商角色。

      限制条件

      • oidc:iss的值:https://******

      • oidc:aud的值:sts.aliyuncs.com

      • oidc:sub的值:system:serviceaccount:sl-123456******-cn-shenzhen-test:sae-oidc-sa

      在限制条件的表格中,根据以下三个条件关键词对身份提供商进行条件限制:

      • oidc:iss:表示OIDC颁发者(Issuer)。其值是创建身份提供商角色时由系统自动生成的,并且不支持修改。

      • oidc:aud:表示OIDC受众(Audience)。其值应选择为sts.aliyuncs.com,此客户端ID是在创建身份提供商角色时由系统自动生成的。

      • oidc:sub:表示OIDC主体(Subject)。其值的格式为system:serviceaccount:sl-{阿里云主账号ID}-{SAE命名空间ID}:sae-oidc-sa。

        重要

        此处的SAE命名空间ID格式需要进行转换,需要将命名空间ID中的:转换成-。例如,在SAE侧查到的命名空间ID为cn-shenzhen:test,转换后应为cn-shenzhen-test。

  3. 为目标角色授予只读访问Serverless应用引擎(SAE)的权限。

    1. 在角色页面,单击目标角色名称。

      VmmiRlKL8n

    2. 在目标角色详情页面的权限管理页签下,单击新增授权。

      iKxOMH0ow8

    3. 在新增授权面板,授予目标角色AliyunSAEReadOnlyAccess的权限,然后单击确认新增授权。

      bRV3zkyvbJ

步骤三:为微服务应用关联RAM角色

在创建应用时关联RAM角色

  1. 返回步骤一中的高级设置页面,然后在身份认证服务区域选择步骤二中创建的RAM角色。

    2NWKQhZ3s7

  2. 单击创建应用。

在部署应用时关联RAM角色

  1. 返回步骤一中的部署应用面板,然后在身份认证服务区域选择步骤二中创建的RAM角色。

    XWORL9BOsx

  2. 单击确定。

步骤四:结果验证

  1. 在基础信息页面的实例列表页签,单击目标实例操作列的Webshell,进入目标实例的字符界面。

    NP6KKXMFlV

  2. 在字符界面输入curl 127.0.0.1:容器端口,进行访问验证。

  3. 在左侧导航栏,选择日志管理 > 实时日志,然后选择进行了访问验证的实例。

    3BUasiDIRO

  4. 在实时日志页面查看是否成功调用了阿里云SAE服务的接口。

相关文章

通过镜像部署应用 2025-04-17 11:01

您可以将应用制成镜像并部署到SAE。镜像可来源于ACR镜像仓库、公开访问的镜像仓库或自建的私有镜像仓库。 尽管您可以直接部署公共镜像仓库(例如Docker Hub、Harbor、GitHub Container Registry)中提供的基础镜像,但通常情况下这些镜像无法完全满足业务需求,您需要结合

通过代码包部署应用 2025-04-17 11:00

完成本地应用开发后,您可以将代码按照SAE要求的格式打包后,上传到SAE进行部署。针对不同语言开发的应用,请参见: Java应用 PHP应用 Python应用

设置启动命令 2025-04-17 11:00

通过SAE控制台使用容器镜像或代码包方式部署应用时,SAE会根据预设的启动参数来启动容器。如果需要在容器启动执行特殊配置(例如Nginx)或不采用预设的启动参数,您可以通过SAE自定义容器的启动命令,以实现特殊配置或覆盖镜像的启动默认参数。

设置环境变量 2025-04-17 11:00

应用在系统中运行需要配置特定的环境变量,如Java应用程序在配置Java_home及其Path后,其相关命令才可以被执行。本文介绍如何在SAE控制台上为应用设置环境变量,包括自定义环境变量和从命名空间配置项、保密字典中引入的环境变量。

服务注册与发现 2025-04-17 11:00

您可以根据所需的技术栈,选用微服务注册中心(例如Nacos、Zookeeper等)实现服务注册与发现,或者基于K8s Service Name实现服务间调用: 基于Nacos等注册中心实现服务注册与发现

设置Hosts绑定 2025-04-17 11:00

SAE支持应用级别的实例,通过Hosts绑定对主机名进行解析,方便应用实例通过主机名进行访问。本文介绍如何在SAE控制台设置Hosts绑定。

目录
Copyright © 2025 your company All Rights Reserved. Powered by 博智数字服务平台.
闽ICP备08105208号-1