阿里云服务器通过API的形式设置安全组规则

本文章详细介绍了Java通过API的形式设置阿里云服务器的安全组 入方向的规则。

前期准备:

a.准备一个阿里云服务器的示例,获取vcpid和私有网络地址,以便控制API的调用权限

b.设置阿里云ak和sk

c.配置ak/sk的使用权限,将调试电脑和服务器的公网IP添加到公网策略中,将服务器的vcpid和私有网络地址加到 专有网络策略 中。

Java开发准备

添加依赖:jdk最低版本要求:1.8

<!--阿里云SDK-->
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>ecs20140526</artifactId>
            <version>8.0.1</version>
        </dependency>

主体代码:

public void aliyun() throws Exception {
        com.aliyun.ecs20140526.Client client = createClient();
        com.aliyun.ecs20140526.models.AuthorizeSecurityGroupRequest.AuthorizeSecurityGroupRequestPermissions permissions0 = new com.aliyun.ecs20140526.models.AuthorizeSecurityGroupRequest.AuthorizeSecurityGroupRequestPermissions()
                .setPolicy("drop")//drop 拒绝访问策略
                .setSourceCidrIp("192.168.2.15")//需要控制的IP地址
                .setPortRange("1/65535")//需要控制访问的端口 1/65535表示所有的端口号
                .setDescription("可疑IP")//规则描述
                .setIpProtocol("TCP");
        com.aliyun.ecs20140526.models.AuthorizeSecurityGroupRequest authorizeSecurityGroupRequest = new com.aliyun.ecs20140526.models.AuthorizeSecurityGroupRequest()
                .setRegionId("cn-chengdu")//地域
                .setSecurityGroupId("sg-2vc******rvblbj")//安全组ID
                .setPermissions(java.util.Arrays.asList(
                        permissions0
                ));
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        try {
            // 复制代码运行请自行打印 API 的返回值
            AuthorizeSecurityGroupResponse authorizeSecurityGroupResponse=client.authorizeSecurityGroupWithOptions(authorizeSecurityGroupRequest, runtime);
            log.info("返回结果:"+authorizeSecurityGroupResponse.getBody());
            log.info("返回结果:"+authorizeSecurityGroupResponse.getHeaders());
            log.info("返回结果:"+authorizeSecurityGroupResponse.getStatusCode());

        } catch (TeaException error) {
            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            // 错误 message
            System.out.println("TeaException error==="+error.getMessage());
            // 诊断地址
            System.out.println("TeaException error Recommend==="+error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            // 错误 message
            System.out.println("Exception _error==="+error.getMessage());
            // 诊断地址
            System.out.println("Exception _error Recommend==="+error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        }
    }
    /**
     * <b>description</b> :
     * <p>使用凭据初始化账号Client</p>
     * @return Client
     *
     * @throws Exception
     */
    public static Client createClient() throws Exception {
        // 工程代码建议使用更安全的无AK方式,凭据配置方式请参见:https://help.aliyun.com/document_detail/378657.html。
        com.aliyun.credentials.Client credential = new com.aliyun.credentials.Client();

        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                // 您的AccessKey ID
                .setAccessKeyId("LTAI5t***********tWtd")//ak
                // 您的AccessKey Secret
                .setAccessKeySecret("Xhbll0**********ZNmpMfDC")//sk
                .setCredential(credential);
        // Endpoint 请参考 https://api.aliyun.com/product/Ecs
        config.endpoint = "ecs.cn-chengdu.aliyuncs.com";
        return new Client(config);
    }

返回结果:

到这里,Java通过API的方式添加阿里云服务器,安全组入方向规则就已经完成了。开发者有时候会遇到本地测试没问题,放到服务器里面测试就会报400的错误,会有异常:

TeaException error===code: 400, The specified parameter "AccessKeyId.AccessPolicyDenied" is not valid. request id: EEE17E2F-2F67-504A-9EED-6B0D51ECD251
TeaException error Recommend===https://api.aliyun.com/troubleshoot?q=InvalidParameter&product=Ecs&requestId=EEE17E2F-2F67-504A-9EED-6B0D51ECD251

这是因为ak/sk的访问控制策略没有配置好的原因,在上面的 配置ak/sk的使用权限 中,一定要把服务器的vcpid和私域网络地址添加到 专有网络策略 中。

以上内容均为参考,如有不足之处欢迎留言讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吾疾唯君医

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值