当前位置: 首页 > 知识库问答 >
问题:

从java中的另一个安全组创建Aws安全组入站规则

羊煜
2023-03-14

我有多个AWS安全组,我想从另一个安全组在一个安全组中创建入站流量规则。我可以从AWS控制台做到这一点,但我想使用java api实现自动化。我怎么能做到呢?

对于使用Cidr块的简单规则,我使用了AuthorizeSecurityGroupingResequest,但在这里我找不到实现这一点的方法。

示例代码:

AuthorizeSecurityGroupIngressRequest authorizeSecurityGroupIngressRequest =new AuthorizeSecurityGroupIngressRequest();
authorizeSecurityGroupIngressRequest.withFromPort(securityGroupIngressRequestParam.getFromPort());
authorizeSecurityGroupIngressRequest.withIpProtocol(securityGroupIngressRequestParam.getIpProtocols().getName());
authorizeSecurityGroupIngressRequest.withToPort(securityGroupIngressRequestParam.getToPort());
authorizeSecurityGroupIngressRequest.withCidrIp(securityGroupIngressRequestParam.getCidrBlock());
authorizeSecurityGroupIngressRequest.setGroupId(securityGroupIngressRequestParam.getSecurityGroupId());
amazonEc2Client.authorizeSecurityGroupIngress(authorizeSecurityGroupIngressRequest);

共有1个答案

陈奇希
2023-03-14

经过Aws Apis的一些尝试和错误,我找到了适合我的解决方案。

我们可以使用IpPermission模型,而不是使用api设置规则详细信息来添加sourceSecurityGroupId。

   AuthorizeSecurityGroupIngressRequest authorizeSecurityGroupIngressRequest = new AuthorizeSecurityGroupIngressRequest();

    IpPermission ipPermission = new IpPermission();
    ipPermission.withFromPort(securityGroupIngressRequestParam.getFromPort()).withToPort(securityGroupIngressRequestParam.getToPort())
        .withIpProtocol(securityGroupIngressRequestParam.getIpProtocols().getName());

    if (!StringUtil.isEmpty(securityGroupIngressRequestParam.getCidrBlock())) {
      ipPermission.withIpRanges(securityGroupIngressRequestParam.getCidrBlock());
    } else if (!StringUtil.isEmpty(securityGroupIngressRequestParam.getSourceSecurityGroupId())) {
      UserIdGroupPair userIdGroupPairs = new UserIdGroupPair();
      userIdGroupPairs.setGroupId(securityGroupIngressRequestParam.getSourceSecurityGroupId());
      ipPermission.withUserIdGroupPairs(userIdGroupPairs);
    } else {
      // TODO throw exception
    }

    authorizeSecurityGroupIngressRequest.withIpPermissions(ipPermission);
    authorizeSecurityGroupIngressRequest.setGroupId(securityGroupIngressRequestParam.getSecurityGroupId());

    amazonEc2Client.authorizeSecurityGroupIngress(authorizeSecurityGroupIngressRequest);
 类似资料:
  • 我有一个ec2实例,它正在运行一个网站并关联ALB。 通常作为ec2实例安全组内部的一种做法,alb安全组是被引用的,但在这里,客户端具有这样的配置,即在ec2实例内部,源是安全组本身的名称。 但是,对于允许所有流量和所有端口的入站规则来说,这意味着什么,但是对于source=。 我对使用与源相同的安全组名称感到困惑,这一规则将意味着什么?

  • 我为RDS实例分配了一个安全组,该组允许来自EC2实例的5432端口流量。 但是,此安全组已为所有IP的所有流量启用所有出站流量。 这是安全风险吗?理想的出站安全规则应该是什么?在我看来,RDS安全组的出站流量应该限制在端口5432到我们的EC2实例,对吗?

  • 我正在编写一个IAM策略来部署EC2实例,同时使用Terraform创建安全组,我不想给EC2完全的访问权限。遵循最小权限原则,创建还添加入站和出站规则的安全组所需的权限是什么?

  • 我有一个用于RDS实例的AWS安全组。 我还有一个用于 EC2 实例的 AWS 安全组。 我设置了它,因此EC2实例的安全组用作我用于RDS实例的安全组的入口。 在我的EC2实例中,我可以使用mysql命令毫无问题地访问RDS实例。 但是,如果我尝试使用带有MySQLi的PHP脚本来访问RDS实例,它将无法连接。 如果我将EC2实例的实际AWS IP地址作为入口添加到RDS安全组,那么使用MySQ

  • 我正在尝试为所有流量添加AWS EC2安全组的入站规则。我正在使用python boto模块来实现这一点。 我已经为tcp | udp | icmp协议添加了规则。但不能为所有流量添加规则。我该怎么做?

  • 我想问一下关于在AWS中连接EC2到RDP的问题。 我已经将我的EC2安全组(包含EC2实例)添加到默认的RDP组中,数据正在流动——连接正常。 EC2安全组启用了端口80到0.0.0.0/0以及SSH到我的IP。 我有点担心,通过将这个EC2组添加到RDS数据库,它将允许来自任何地方的端口80流量访问数据库。这是对的还是错的? 如果像这样连接RDS实例,EC2中的规则是否适用于它们? 我确实在A