在CloudFormation中创建安全组时如何指定我的IP?

Mat*_*ski 2 amazon-ec2 amazon-web-services aws-cloudformation

在 CloudFormation 中,我尝试创建一个带有 Ingress 规则的安全组,仅允许我的 IP 地址访问端口 22。但是,我似乎无法在网上找到任何有关此内容或任何解决方案的文档。

我不想向互联网开放安全组,并希望尽可能将其锁定。我想知道是否有人对如何做到这一点有任何建议?

Resources:
  SecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Example
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 22
          ToPort: 22
          CidrIp: # My IP Address
Run Code Online (Sandbox Code Playgroud)

编辑:我想从下面的答案来看这是不可能的解决方案就是这样做:

Parameters:
  IpAddress:
    Description: Your IP Address
    Type: String

Resources:
  SecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Example
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 22
          ToPort: 22
          CidrIp: !Sub '${IpAddress}/24'
Run Code Online (Sandbox Code Playgroud)

小智 5

正如之前提到的,您可以执行以下操作:首先将所需的参数添加到您的 CloudFormation 模板中

Parameters:
  homeIp: 
    Type: String
    Description: my changing ip
Run Code Online (Sandbox Code Playgroud)

然后调用update-stackcreate-stackcurl命令来识别当前IP。

aws cloudformation update-stack \
--stack-name test --template-body file://test.yml \
--parameters ParameterKey=homeIp,ParameterValue=$(curl -s http://checkip.amazonaws.com/)/32
Run Code Online (Sandbox Code Playgroud)

通过执行curlhttp://checkip.amazonaws.com/ 它将使用当前 IP 进行响应。重要的是要在最后添加/32,因为安全组需要提供 cidr 块。