AWS

AWS 개요

Multicloud Defense에서 AWS 어카운트를 Multicloud Defense 컨트롤러에 연결할 때 사용하는 CloudFormation 템플릿을 만들었습니다.

Multicloud Defense 컨트롤러과의 통합을 위한 클라우드 어카운트를 준비하려면 클라우드 어카운트에서 수행해야 하는 특정 단계가 있습니다. 다음은 AWS 클라우드 어카운트를 Multicloud Defense 컨트롤러에 연결하기 전에 수행해야 하는 사전 요건 단계입니다. 이는 작업의 개요를 제공하기 위한 것이며 수동으로 수행할 수 없습니다. CloudFormation 섹션에 구축 세부 정보 및 매개변수 정보가 있습니다.

단계 개요

  1. Multicloud Defense 컨트롤러가 클라우드 어카운트를 관리하는 데 사용하는 어카운트 간 IAM 역할을 생성합니다.

  2. 어카운트에서 실행되는 Multicloud Defense 게이트웨이 EC2 인스턴스에 할당될 IAM 역할을 생성합니다.

  3. 관리 이벤트를 Multicloud Defense 컨트롤러로 전송하는 CloudWatch 이벤트 규칙을 생성합니다.

  4. 관리 이벤트 전송을 수행할 권한을 제공하는 위의 CloudWatch 이벤트 규칙에서 사용하는 IAM 역할을 생성합니다.

  5. 필요에 따라 어카운트에 S3 버킷을 생성하여 CloudTrail 이벤트, Route53 DNS 쿼리 로그 및 VPC 플로우 로그를 저장할 수 있습니다.

  6. 대상을 위에서 생성한 S3 버킷으로 하여 Route53 DNS 쿼리 로깅을 활성화하고 쿼리 로깅을 활성화해야 하는 VPC를 선택합니다.

  7. CloudTrail을 활성화하여 모든 관리 이벤트를 위에서 생성한 S3 버킷에 로깅합니다.

  8. 위에서 생성한 대상이 S3 버킷인 VPC 플로우 로그를 활성화합니다.

  9. AWS Marketplace 서비스 약관에 동의합니다.

Multicloud Defense 대시보드에서 Multicloud Defense 컨트롤러에 AWS 어카운트를 연결합니다.

Multicloud Defense이(가) AWS 어카운트를 Multicloud Defense 컨트롤러에 쉽게 연결할 수 있는 CloudFormation 템플릿을 생성했습니다.

Before you begin

AWS 어카운트를 Multicloud Defense에 연결하기 전에 다음 요구 사항을 자세히 읽어보십시오.

  • 시작하기 전에 Security Cloud Control 테넌트에 대해 Multicloud Defense 컨트롤러를 요청해야 합니다.

  • AWS 어카운트의 클라우드 스토리지 버킷 이름은 3~65자여야 합니다. 버킷 이름이 65자보다 길면 연결 프로세스 중에 오류가 발생합니다.


Note


Multicloud Defense 컨트롤러 버전 23.10은 Multicloud Defense 게이트웨이 버전 23.04 이상을 사용하는 경우 AWS EC2 인스턴스에서 기본적으로 IMDSv2를 사용합니다. IMDSv1과 IMDSv2의 차이점에 대한 자세한 내용은 AWS 설명서를 참조하십시오.


Procedure


Step 1

왼쪽 창에서 Multicloud Defense를 클릭합니다.

Step 2

Multicloud Defense 컨트롤러 버튼을 클릭합니다.

Step 3

Cloud Accounts(클라우드 어카운트) 창에서 Add Account(어카운트 추가)를 클릭합니다.

Step 4

General Information(일반 정보) 페이지에 있는 Account Type(어카운트 유형) 목록 상자에서 AWS를 선택합니다.

Step 5

Launch Stack(스택 실행)을 클릭하여 CloudFormation 템플릿을 다운로드하고 구축합니다. 이렇게 하면 템플릿을 구축할 수 있는 다른 탭이 열립니다. AWS에 로그인해야 합니다.

Step 6

AWS CloudFormation이 맞춤형 이름으로 IAM 리소스를 생성할 수 있음을 확인합니다.

Step 7

다음 값을 입력합니다.

  • AWS Account Number(AWS 어카운트 번호): 보호하려는 어카운트의 AWS 어카운트 번호를 입력합니다. 이 번호는 CloudFormation 템플릿의 출력 값 CurrentAccount에서 찾을 수 있습니다.

  • Account Name(어카운트 이름): 온보딩된 어카운트에 지정할 이름을 입력합니다.

  • Description(설명):(선택 사항) 어카운트 설명을 입력합니다.

  • External ID(외부 ID): IAM 역할의 신뢰 정책에 대한 임의 문자열입니다. 이 값은 생성된 컨트롤러 IAM 역할에서 사용됩니다. 외부 ID를 편집하거나 다시 생성할 수 있습니다.

  • Controller IAM Role(컨트롤러 IAM 역할): 이 역할은 CFT(CloudFormation Template) 구축 중에 Multicloud Defense 컨트롤러에 대해 생성되는 IAM 역할입니다. CFT 스택에서 출력 값 MCDControllerRoleArm을 찾습니다. 다음과 유사해야 합니다: arn:aws:iam::<Acc Number>:role/ciscomcdcontrollerrole.

  • Inventory Monitor Role(재고 목록 모니터 역할): 이 역할은 CFT 구축 중에 멀티클라우드 방어 재고 목록에 대해 생성된 IAM 역할입니다. CFT 스택에서 출력 값 MCDInventoryRoleArn을 찾습니다. 다음과 유사해야 합니다: arn:aws:iam::<Acc Number>:role/ciscomcdinventoryrole.

Step 8

Save and Continue(저장 후 계속 진행)를 클릭합니다.

새 AWS 클라우드 어카운트가 기록되었음을 확인할 수 있는 Multicloud Defense 대시보드로 돌아갑니다.

What to do next

  1. 액세스 및 통신을 보호하기 위해 AWS 어카운트에올바른 권한을 추가합니다.

  2. 트래픽 가시성을 활성화합니다.

CloudFormation 출력

Outputs(출력) 탭에서 다음 정보를 복사하고 텍스트 편집기에 붙여넣습니다.

  • CurrentAccount(애플리케이션이 실행되고 Multicloud Defense 게이트웨이이 구축될 AWS 어카운트 ID)

    • MCDControllerRoleArm

    • MCDGatewayRoleName

    • MCDInventoryRoleArn

    • MCDS3BucketArn

    • MCDBucketName

역할 생성자: Multicloud Defense

제공된 스크립트를 사용하여 클라우드 서비스 어카운트를 Multicloud Defense 컨트롤러에 온보딩할 경우 서비스 간 통신이 보호되도록 클라우드 통신 사업자의 매개변수 내에서 사용자 역할이 생성됩니다. 클라우드 통신 사업자에 따라 서로 다른 역할 및 권한이 생성됩니다.

어카운트를 온보딩할 때 다음 역할이 생성됩니다.

MCDControllerRole

Multicloud Defense이(가) 클라우드 어카운트에 액세스하여 EC2 인스턴스 생성, 로드 밸런서 생성, Route53 항목 변경 등의 필요한 작업을 수행할 수 있는 교차 어카운트 IAM 역할입니다. 서비스 보안 주체는 외부 ID가 적용된 Multicloud Defense-controller-account입니다. 역할에 적용되는 IAM 정책은 다음과 같습니다(예: 이 예에서 사용된 컨트롤러 역할 이름은 Multicloud Defense-controller-role).


{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "acm:DescribeCertificate",
        "aacm:ListCertificates",
        "apigateway:Get",
        "bedrock:Get*",
        "bedrock:List*",
        "bedrock:Retrieve",
        "ec2:*",
        "elasticloadbalancing:*",
        "events:*",
        "globalaccelerator:*"
        "iam:ListPolicies",
        "iam:ListRoles",
        "iam:ListRoleTags",
        "logs:*",
        "route53resolver:*",
        "servicequotas:GetServiceQuota",
        "s3:ListAllMyBuckets",
        "s3:ListBucket",
        "wafv2:Get*",
        "wafv2:List*,
      ],
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Action": [
        "iam:GetRole",
        "iam:ListRolePolicies",
        "iam:GetRolePolicy"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:iam::<ciscomcd-account>:role/ciscomcd-controller-role"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::<S3Bucket>/*"
    },
    {
      "Action": [
        "iam:GetRole",
        "iam:ListRolePolicies",
        "iam:GetRolePolicy",
        "iam:PassRole"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:iam::<customer- account>:role/ciscomcd_firewall_role"
    },
    {
      "Action": "iam:CreateServiceLinkedRole",
      "Effect": "Allow",
      "Resource": "arn:aws:iam::*:role/aws-service-role/*"
    }
  ]
}

서비스 보안 주체:


{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::<ciscomcd-account>:root"
        ]
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "ciscomcd-external-id"
        }
      }
    }
  ]
}

MCDGatewayRole

Multicloud Defense 게이트웨이 (방화벽) EC2 인스턴스에 할당된 역할입니다. 역할은 게이트웨이 인스턴스에 애플리케이션의 개인 키가 저장되어 있는 secretsmanager에 액세스하는 기능, 키가 KMS에 저장된 경우 AWS KMS를 사용하여 키를 암호 해독하는 기능, 그리고 PCAP 같은 개체와 기술 지원 데이터를 S3 버킷에 저장하는 기능을 제공합니다. 이 역할의 서비스 보안 주체는 ec2.amazonaws.com입니다. 역할에 적용되는 IAM 정책은 다음과 같습니다.


{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:PutObject",
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::*/*"
    },
    {
      "Action": [
        "kms:Decrypt"
      ],
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Action": [
        "secretsmanager:GetSecretValue"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

Tip


CloudFormation 템플릿을 다운로드하고 편집하여 특정 키를 사용하도록 암호 해독을 제한하거나 PutObject를 정의된/특정 S3 버킷으로 제한하는 등 정책을 더 제한적으로 만들 수 있습니다.


MCDInventoryRole

이는 동적 재고 목록용으로 사용되며 컨트롤러의 AWS 어카운트으로 CloudTrail 이벤트를 전송할 수 있는 기능을 제공하는 역할입니다. 다음 작업을 수행합니다.

  • Multicloud Defense 컨트롤러이(가) 있는 AWS 어카운트의 이벤트 버스에 이벤트를 배치합니다.

  • 규칙과 일치하는 이벤트를 고객의 AWS 어카운트에서 직접 Multicloud Defense 컨트롤러의 webhook 서버로 전송합니다.

이 역할의 서비스 보안 주체는 events.amazonaws.com입니다. 역할에 적용되는 정책은 다음과 같습니다.


{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "events:PutEvents",
      "Effect": "Allow",
      "Resource": [
        "arn:aws:events:*:<ciscomcd-account>:event-bus/default"
      ]
    }
  ]
}

InventoryMonitorRule

Multicloud Defense 컨트롤러가 실행되는 AWS 어카운트의 이벤트 버스에 복사할 EC2 및 API 게이트웨이에 대한 모든 CloudTrail 재고 목록 변경 사항을 저장하기 위해 MCDInventoryRole에 추가되는 규칙입니다. 규칙은 고객의 AWS 어카운트에서 발생하는 특정 이벤트 패턴과 일치해야 합니다. 일치가 발생하면 규칙이 일치하는 이벤트를 컨트롤러의 webhook 서버(API 기반 대상)로 전송하도록 규정합니다. 이 규칙은 이전 섹션에서 생성된 Multicloud DefenseMCDInventoryRole을 사용하여 실행됩니다.

사용자 지정 이벤트 패턴:


{
  "detail-type": [
    "AWS API Call via CloudTrail",
    "EC2 Instance State-change Notification"
  ],
  "source": [
    "aws.ec2",
    "aws.elasticloadbalancing",
    "aws.apigateway"
  ]
}

대상:


Event Bus in another AWS Account (mcd-account) using the MCDInventoryRole