Как использовать IP-адрес EC2 в группе безопасности внутри облачной информации - PullRequest
0 голосов
/ 19 ноября 2018

Я немного новичок в облачной информации, и у меня возникли проблемы с настройкой параметров или с поиском информации о том, как ссылаться на IP-адрес ec2 в моей группе безопасности. Эти два определены в моем стеке, и мой SG зависит от EC2. Вот мой СГ:

        "3DEXPPLAT": {
        "Type": "AWS::EC2::SecurityGroup",
        "Properties": {
            "GroupDescription": "3DPLAT SG",
            "SecurityGroupIngress": [
                {
                    "IpProtocol": "tcp",
                    "FromPort": 80,
                    "ToPort": 80,
                    "CidrIp": {"Ref" : "CFAPA"}
                }
            ],
            "Tags": [
                {
                    "Key": "Name",
                    "Value": "STACK_3DEXPSG"
                }
            ]
        },
        "Metadata": {
            "AWS::CloudFormation::Designer": {
                "id": "59898995-0f8d-4cbe-b315-c9c68df319b2"
            }
        },
        "DependsOn": [
            "CFAPA"
        ]
    }

Итак, что я должен вставить в CidrIp в SecurityGroupIngress, чтобы мой SG использовал частный IP моего EC2?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Когда вы используете Fn::Ref в экземпляре EC2, вы получаете его идентификатор экземпляра.Для вашей группы безопасности вам нужен IP-адрес (с использованием Fn::GetAtt), и вам необходимо отформатировать его как блок CIDR (добавив нотацию с Fn::Sub).Итак, если предположить, что CFAPA - это ваш экземпляр EC2, это должно работать:

{
    "3DEXPPLAT": {
        "Type": "AWS::EC2::SecurityGroup",
        "Properties": {
            "GroupDescription": "3DPLAT SG",
            "SecurityGroupIngress": [
                {
                    "IpProtocol": "tcp",
                    "FromPort": 80,
                    "ToPort": 80,
                    "CidrIp": {
                        "Fn::Sub": "${CFAPA.PrivateIp}/32"
                    }
                }
            ]
        }
    }
}

Примечания:

  • вам не нужно указывать атрибут DependsOn, поскольку CloudFormation выяснит зависимость из-за ссылки.Это упрощает код.

  • , чтобы выяснить, что свойство для использования в Fn::GetAtt было названо PrivateIp, вы должны обратиться к разделу «Возвращаемые значения» AWS :: EC2 :: Экземпляр документация.Здесь вы замечаете, что Fn::Ref возвращает идентификатор экземпляра.

  • , помните, что частные IP-адреса могут измениться.Поэтому вы можете присоединить CFAPA к другой группе безопасности и создать разрешения на основе членства в группах безопасности.Это архитектурное решение.

0 голосов
/ 19 ноября 2018

Это неправильный подход.

Вместо того, чтобы ссылаться на явные IP-адреса внутренних узлов, вы должны указать в качестве источника другую группу безопасности ( doc ).Один общий подход заключается в определении группы безопасности для каждого приложения и присоединении этих групп к экземплярам (ям) ELB, EC2 и RDS, которые составляют это приложение.

Вы можете прикрепить до 5 групп безопасности ксетевой интерфейс, так что эта группа «внутренней связи» может быть дополнением к любой группе (группам) внешней связи, которую вы можете использовать (например, правило на ELB, которое принимает трафик из Интернета).

Одно предостережение для CloudFormation: вы не сможете определить свои входящие правила.Вместо этого вам понадобится отдельное определение входного правила , которое ссылается на уже определенную группу безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...