AWS CloudFormation 사용자 지정 리소스와 Amazon SNS를 사용하여 Infoblox 객체를 생성 - 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS CloudFormation 사용자 지정 리소스와 Amazon SNS를 사용하여 Infoblox 객체를 생성

작성자: Tim Sutton(AWS)

요약

알림: AWS Cloud9 신규 고객은 더 이상를 사용할 수 없습니다. 의 기존 고객은 평소와 같이 서비스를 계속 사용할 AWS Cloud9 수 있습니다. 자세히 알아보기

Infoblox 도메인 이름 시스템(DNS), Dynamic Host Configuration Protocol(DHCP) 및 IP 주소 관리(Infoblox DDI)를 사용하면 복잡한 하이브리드 환경을 중앙 집중화하고 효율적으로 제어할 수 있습니다. Infoblox DDI를 사용하면 동일한 어플라이언스를 사용하여 온프레미스와 Amazon Web Services(AWS) 클라우드의 DNS를 관리하는 것 외에도 하나의 신뢰할 수 있는 IP 주소 관리자(IPAM) 데이터베이스에서 모든 네트워크 자산을 검색하고 기록할 수 있습니다.

이 패턴은 Infoblox WAPI API를 직접 호출하여 AWS CloudFormation 사용자 지정 리소스를 사용하여 Infoblox 객체(예: DNS 레코드 또는 IPAM 객체)를 생성하는 방법을 설명합니다. Infoblox WAPI에 대한 자세한 내용은 Infoblox 설명서의 WAPI 설명서를 참조하세요.

이 패턴의 접근 방식을 사용하면 레코드를 생성하고 네트워크를 프로비저닝하는 수동 프로세스를 제거하는 것 외에도 AWS 및 온프레미스 환경의 DNS 레코드 및 IPAM 구성을 통합적으로 볼 수 있습니다. 다음과 같은 사용 사례에서 이 패턴의 접근 방식을 사용할 수 있습니다.

  • Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 생성한 후 A 레코드 추가 

  • Application Load Balancer를 생성한 후 CNAME 레코드 추가

  • Virtual Private Cloud(VPC) 생성 후 네트워크 객체 추가

  • 다음 네트워크 범위를 제공하고 해당 범위를 사용하여 서브넷을 생성

또한 이 패턴을 확장하여 다른 DNS 레코드 유형 추가 또는 Infoblox vDiscovery 구성과 같은 다른 Infoblox 장치 기능을 사용할 수 있습니다. 

이 패턴은 허브가 AWS 클라우드 또는 온프레미스의 Infoblox 어플라이언스에 연결되어야 하고 AWS Lambda를 사용하여 Infoblox API를 직접 호출하는 허브 앤 스포크 디자인을 사용합니다. 스포크는 AWS Organizations의 동일한 조직 내 동일하거나 다른 계정에 있으며, AWS CloudFormation 사용자 지정 리소스를 사용하여 Lambda 함수를 직접 호출합니다.

사전 조건 및 제한 사항

사전 조건 

  • AWS 클라우드, 온프레미스 또는 둘 다에 설치되고 IPAM 및 DNS 작업을 관리할 수 있는 관리자 사용자로 구성된 기존 Infoblox 어플라이언스 또는 그리드. 자세한 내용은 Infoblox 설명서의 관리자 계정 정보를 참조하세요. 

  • Infoblox 어플라이언스에 레코드를 추가하려는 기존 DNS 권한 영역. 이에 대한 자세한 내용은 Infoblox 설명서의 신뢰할 수 있는 영역 구성을 참조하세요. 

  • AWS Organizations의 활성 AWS 계정 2개. 한 계정은 허브 계정이고 다른 계정은 스포크 계정이어야 합니다.

  • CMK는 동일한 AWS 계정 및 리전에 있어야 합니다. 

  • 허브 계정의 VPC는 Infoblox 어플라이언스에 연결해야 합니다.(예: AWS Transit Gateway 또는 VPC 피어링 사용)

  • AWS Serverless Application Model(AWS SAM), AWS Cloud9 또는 AWS CloudShell로 로컬에서 설치 및 구성됨.

  • AWS SAM이 포함된 로컬 환경에 다운로드된 Infoblox-Hub.zipClientTest.yaml 파일(첨부).

제한 사항

  • AWS CloudFormation 사용자 지정 리소스의 서비스 토큰은 스택이 생성된 리전과 동일한 리전에서 가져와야 합니다. 한 리전에서 Amazon Simple Notification Service(SNS) 주제를 생성하고 다른 리전에서 Lambda 함수를 직접 호출하는 대신 각 리전에서 허브 계정을 사용하는 것이 좋습니다.

제품 버전

  • Infoblox API 버전 2.7

아키텍처

다음 다이어그램은 이 워크플로를 보여 줍니다. 

AWS CloudFormation 사용자 지정 리소스 및 Amazon SNS를 사용하여 Infoblox 객체 생성.

이 패턴 솔루션의 다음 구성 요소를 보여주는 다이어그램입니다.

  1. AWS CloudFormation 사용자 지정 리소스를 사용하면 스택을 생성, 업데이트(사용자 지정 리소스를 변경한 경우) 또는 삭제할 때마다 AWS CloudFormation에서 실행하는 템플릿에서 사용자 지정 프로비저닝 로직을 작성할 수 있습니다. 예를 들어, 스택을 생성할 때 AWS CloudFormation은 EC2 인스턴스에서 실행 중인 애플리케이션이 모니터링하는 SNS 주제에 create 요청을 전송할 수 있습니다.

  2. AWS CloudFormation 사용자 지정 리소스의 Amazon SNS 알림은 특정 AWS Key Management Service(AWS KMS) 키를 통해 암호화되며, Organizations에 있는 조직의 계정으로만 액세스할 수 있습니다. SNS 주제는 Infoblox WAPI API를 직접 호출하는 Lambda 리소스를 시작합니다.

  3. Amazon SNS는 Infoblox의 WAPI URL, 사용자 이름, 암호 AWS Secrets Manager Amazon 리소스 이름(ARN)을 환경 변수로 사용하는 다음과 같은 Lambda 함수를 간접적으로 호출합니다. 

    • dnsapi.lambda_handler – AWS CloudFormation 사용자 지정 리소스로부터 DNSName, DNSType, DNSValue 값을 수신하고 이를 사용하여 DNS A 레코드 및 CNAME을 생성합니다.

    • ipaddr.lambda_handler – AWS CloudFormation 사용자 지정 리소스로부터 VPCCIDR, Type, SubnetPrefix, Network Name 값을 수신하고 이를 사용하여 네트워크 데이터를 Infoblox IPAM 데이터베이스에 추가하거나 새 서브넷을 생성하는 데 사용할 수 있는 다음 가용 네트워크와 함께 사용자 지정 리소스를 제공합니다.

    • describeprefixes.lambda_handler"com.amazonaws."+Region+".s3" 필터를 사용하여 필요한 prefix ID을(를) 검색하고 describe_managed_prefix_lists AWS API를 직접 호출합니다.

    중요

    이러한 Lambda 함수는 Python으로 작성되며 서로 비슷하지만 서로 다른 APIs.

  4. Infoblox 그리드를 물리적, 가상 또는 클라우드 기반 네트워크 어플라이언스로 배포할 수 있습니다.  온프레미스로 배포하거나 VMware ESXi, Microsoft Hyper-V, Linux KVM 및 Xen을 비롯한 다양한 하이퍼바이저를 사용하여 가상 어플라이언스로 배포할 수 있습니다. Amazon Machine Image(AMI)를 사용하여 AWS 클라우드에 Infoblox 그리드를 배포할 수도 있습니다.

  5. 다음 다이어그램은 AWS 클라우드와 온프레미스의 리소스에 DNS와 IPAM을 제공하는 Infoblox 그리드용 하이브리드 솔루션을 보여줍니다.

기술 스택  

  • AWS CloudFormation

  • IAM

  • KMS

  • AWS Lambda

  • AWS SAM

  • AWS Secrets Manager

  • Amazon SNS

  • Amazon VPC 

도구

  • AWS CloudFormation을 사용하면 AWS 리소스를 설정하고, 빠르고 일관되게 프로비저닝하고, 전체 AWS 계정 및 리전에서 수명 주기 전반에 걸쳐 관리할 수 있습니다.

  • AWS Identity and Access Management(IAM)를 사용하면 사용자에 대해 인증 및 권한 부여를 제어함으로써 AWS 리소스에 대한 액세스를 안전하게 관리할 수 있습니다.

  • AWS Key Management Service(AWS KMS)를 사용하면 암호화 키를 생성하고 제어하여 데이터를 보호할 수 있습니다.

  • AWS Lambda는 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행하는 데 도움이 되는 컴퓨팅 서비스입니다. 필요할 때만 코드를 실행하며 자동으로 확장이 가능하므로 사용한 컴퓨팅 시간만큼만 비용을 지불합니다.

  • AWS Organizations는 사용자가 생성하고 중앙에서 관리하는 조직으로 여러 AWS 계정을 통합할 수 있는 계정 관리 서비스입니다.

  • AWS Secrets Manager를 사용하면 코드에 하드코딩된 보안 인증 정보(암호 등)를 Secrets Manager에 대한 API 직접 호출로 바꾸어 프로그래밍 방식으로 보안 암호를 검색할 수 있습니다.

  • AWS Serverless Application Model(AWS SAM)은 AWS 클라우드에서 서버리스 애플리케이션을 구축하는 데 사용할 수 있는 오픈소스 프레임워크입니다.

  • Amazon Simple Notification Service(Amazon SNS)를 사용하면 웹 서버 및 이메일 주소를 포함하여 게시자와 클라이언트 간의 메시지 교환을 조정하고 관리할 수 있습니다.

  • Amazon Virtual Private Cloud(VPC)를 사용하면 사용자가 정의한 가상 네트워크로 AWS 리소스를 시작할 수 있습니다. 이 가상 네트워크는 사용자의 자체 데이터 센터에서 운영하는 기존 네트워크와 유사하며 AWS의 확장 가능한 인프라를 사용한다는 이점이 있습니다.

코드

ClientTest.yaml 샘플 AWS CloudFormation 템플릿(첨부)을 사용하여 Infoblox 허브를 테스트할 수 있습니다. 다음 테이블의 사용자 지정 리소스를 포함하도록 AWS CloudFormation 템플릿을 사용자 지정할 수 있습니다.

Infoblox 스포크 사용자 지정 리소스를 사용하여 A 레코드를 생성

반환 값

infobloxref  – Infoblox 참조

리소스 예제:

ARECORDCustomResource: Type: "Custom::InfobloxAPI" Properties: ServiceToken: !Sub arn:aws:sns:${AWS::Region}:${HubAccountID}:RunInfobloxDNSFunction DNSName: 'arecordtest.company.com' DNSType: 'ARecord' DNSValue: '10.0.0.1'

Infoblox 스포크 사용자 지정 리소스를 사용하여 CNAME 레코드 생성

반환 값

infobloxref  – Infoblox 참조

리소스 예제:

CNAMECustomResource: Type: "Custom::InfobloxAPI" Properties: ServiceToken: !Sub arn:aws:sns:${AWS::Region}:${HubAccountID}:RunInfoblox DNSFunction DNSName: 'cnametest.company.com' DNSType: 'cname' DNSValue: 'aws.amazon.com'

Infoblox 스포크 사용자 지정 리소스를 사용하여 네트워크 개체 생성

반환 값:

infobloxref  – Infoblox 참조

network – 네트워크 범위(VPCCIDR와 동일)

리소스 예제:

VPCCustomResource: Type: 'Custom::InfobloxAPI' Properties: ServiceToken: !Sub arn:aws:sns:${AWS::Region}:${HubAccountID}:RunInfobloxNextSubnetFunction VPCCIDR: !Ref VpcCIDR Type: VPC NetworkName: My-VPC

Infoblox 스포크 사용자 지정 리소스를 사용하여 다음의 사용 가능한 서브넷을 검색

반환 값:

infobloxref – Infoblox 참조

network  – 서브넷의 네트워크 범위

리소스 예제:

Subnet1CustomResource: Type: 'Custom::InfobloxAPI' DependsOn: VPCCustomResource Properties: ServiceToken: !Sub arn:aws:sns:${AWS::Region}:${HubAccountID}:RunInfobloxNextSubnetFunction VPCCIDR: !Ref VpcCIDR Type: Subnet SubnetPrefix: !Ref SubnetPrefix NetworkName: My-Subnet

에픽

작업설명필요한 기술

Infoblox 어플라이언스에 연결하여 VPC를 생성합니다.

허브 계정을 위한 AWS Management Console에 로그인하고 AWS Quick Start의 AWS 클라우드 퀵 스타트 참조 배포의 Amazon VPC에 있는 단계에 따라 VPC를 생성합니다.

중요

VPC에는 Infoblox 어플라이언스에 대한 HTTPS 연결이 있어야 하며이 연결에는 프라이빗 서브넷을 사용하는 것이 좋습니다.

네트워크 관리자, 시스템 관리자

(선택 사항)프라이빗 서브넷을 위한 VPC 엔드포인트를 생성하세요.

VPC 엔드포인트는 프라이빗 서브넷에 퍼블릭 서비스에 대한 연결을 제공합니다. 다음 엔드포인트는 필수 엔드포인트입니다.

  • Lambda가 AWS CloudFormation과 통신할 수 있도록 하는 Amazon Simple Storage Service(S3)의 게이트웨이 엔드포인트

  • Secrets Manager와의 연결을 지원하는 Secrets Manager의 인터페이스 엔드포인트

  • SNS 주제 및 Secrets Manager 비밀의 암호화를 허용하는 AWS KMS용 인터페이스 엔드포인트

프라이빗 서브넷용 엔드포인트를 생성하는 방법에 대한 자세한 내용은 Amazon VPC 설명서의 VPC 엔드포인트 섹션을 참조하세요.

네트워크 관리자, 시스템 관리자
작업설명필요한 기술

AWS SAM 템플릿을 구축하세요.

  1. AWS SAM이 포함된 환경에서 unzip Infoblox-Hub.zip 명령을 실행합니다.

  2. cd Hub/ 명령을 실행하여 사용자 디렉터리를 Hub 디렉터리로 변경합니다.

  3. sam build 명령을 실행하여 AWS SAM 템플릿 파일, 애플리케이션 코드, 모든 언어별 파일 및 종속성을 처리합니다. 또한 sam build 명령은 다음 스토리에 예상되는 형식과 위치로 빌드 아티팩트를 복사합니다.

개발자, 시스템 관리자

AWS SAM 템플릿을 배포하세요.

sam deploy 명령은 필수 파라미터를 가져와 samconfig.toml 파일에 저장하고, AWS CloudFormation 템플릿과 Lambda 함수를 S3 버킷에 저장한 다음, AWS CloudFormation 템플릿을 허브 계정에 배포합니다. 

다음 샘플 코드는 AWS SAM 템플릿을 배포하는 방법을 보여줍니다.

$ sam deploy --guided Configuring SAM deploy ====================== Looking for config file [samconfig.toml] : Found Reading default arguments : Success Setting default arguments for 'sam deploy' ========================================= Stack Name [Infoblox-Hub]: AWS Region [eu-west-1]: Parameter InfobloxUsername: Parameter InfobloxPassword: Parameter InfobloxIPAddress [xxx.xxx.xx.xxx]: Parameter AWSOrganisationID [o-xxxxxxxxx]: Parameter VPCID [vpc-xxxxxxxxx]: Parameter VPCCIDR [xxx.xxx.xxx.xxx/16]: Parameter VPCSubnetID1 [subnet-xxx]: Parameter VPCSubnetID2 [subnet-xxx]: Parameter VPCSubnetID3 [subnet-xxx]: Parameter VPCSubnetID4 []: #Shows you resources changes to be deployed and require a 'Y' to initiate deploy Confirm changes before deploy [Y/n]: y #SAM needs permission to be able to create roles to connect to the resources in your template Allow SAM CLI IAM role creation [Y/n]: n Capabilities [['CAPABILITY_NAMED_IAM']]: Save arguments to configuration file [Y/n]: y SAM configuration file [samconfig.toml]: SAM configuration environment [default]:
중요

Infoblox 로그인 자격 증명은 samconfig.toml 파일에 저장되지 않으므로 매번 --guided 옵션을 사용해야 합니다.

개발자, 시스템 관리자

관련 리소스

첨부

이 문서와 관련된 추가 콘텐츠에 액세스하려면 attachment.zip 파일의 압축을 풉니다.