As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Implantação da Control Tower (CT)
O guia Customizations for AWS Control Tower (cFCT) é para administradores, DevOps profissionais, fornecedores independentes de software, arquitetos de infraestrutura de TI e integradores de sistemas que desejam personalizar e ampliar seus ambientes da AWS Control Tower para suas empresas e clientes. Ele fornece informações sobre a personalização e a extensão do ambiente do AWS Control Tower com o pacote de personalização do CfCT.
Tempo de implantação: Aproximadamente 30 minutos
Pré-requisitos
Antes de implantar essa solução, certifique-se de que ela seja destinada aos administradores do AWS Control Tower.
Quando você estiver pronto para configurar sua landing zone usando o console do AWS Control Tower ou APIs siga estas etapas:
Para começar a usar o AWS Control Tower, consulte: Getting Started with AWS Control Tower
Para saber como personalizar sua zona de pouso, consulte: Personalizando sua zona de pouso
Para iniciar e implantar sua zona de pouso, consulte: Guia de implantação da zona de pouso
Visão geral da implantação
Use as etapas a seguir para implantar essa solução na AWS.
Etapa 1: criar e implantar o bucket S3
nota
Configuração do bucket S3 — somente para ADMIN. Essa é uma etapa de configuração única e não deve ser repetida pelos usuários finais. Os buckets do S3 armazenam o pacote de implantação, incluindo o CloudFormation modelo da AWS e o código Lambda necessários para a execução do ASR. Esses recursos são implantados usando CfCt ou StackSet.
1. Configurar o bucket S3
Configure o bucket do S3 que será usado para armazenar e servir seus pacotes de implantação.
2. Configurar o ambiente do
Prepare as variáveis de ambiente, as credenciais e as ferramentas necessárias para o processo de criação e implantação.
3. Configurar políticas de bucket do S3
Defina e aplique as políticas de bucket apropriadas para controlar o acesso e as permissões.
4. Prepare a construção
Compile, empacote ou prepare seu aplicativo ou ativos para implantação.
5. Implantar pacotes no S3
Faça upload dos artefatos de construção preparados para o bucket S3 designado.
Etapa 2: implantação de pilhas no AWS Control Tower
1. Crie um manifesto de compilação para componentes do ASR
Defina um manifesto de construção que liste todos os componentes do ASR, suas versões, dependências e instruções de construção.
2. Atualize o CodePipeline
Modifique a CodePipeline configuração da AWS para incluir as novas etapas de construção, artefatos ou estágios necessários para a implantação dos componentes do ASR.
Etapa 1: criar e implantar no bucket S3
As soluções da AWS usam dois buckets: um bucket para acesso global aos modelos, que é acessado via HTTPS, e buckets regionais para acessar ativos dentro da região, como o código Lambda.
1. Configurar o bucket S3
Escolha um nome de bucket exclusivo, por exemplo, asr-staging. Defina duas variáveis de ambiente em seu terminal, uma deve ser o nome base do bucket com -reference como sufixo e a outra com a região de implantação pretendida como sufixo:
export BASE_BUCKET_NAME=asr-staging-$(date +%s) export TEMPLATE_BUCKET_NAME=$BASE_BUCKET_NAME-reference export REGION=us-east-1 export ASSET_BUCKET_NAME=$BASE_BUCKET_NAME-$REGION
2. Configuração do ambiente
Na sua conta da AWS, crie dois buckets com esses nomes, por exemplo, asr-staging-reference e asr-staging-us-east -1. (O bucket de referência conterá os CloudFormation modelos, o bucket regional conterá todos os outros ativos, como o pacote de código lambda.) Seus buckets devem ser criptografados e impedir o acesso público
aws s3 mb s3://$TEMPLATE_BUCKET_NAME/ aws s3 mb s3://$ASSET_BUCKET_NAME/
nota
Ao criar seus buckets, certifique-se de que eles não estejam acessíveis ao público. Use nomes de bucket aleatórios. Desative o acesso público. Use a criptografia KMS. E verifique a propriedade do bucket antes de fazer o upload.
3. Configuração da política de buckets do S3
Atualize a política de bucket do S3 $TEMPLATE_BUCKET_NAME para incluir permissões para o ID da conta de execução. PutObject Atribua essa permissão a uma função do IAM na conta de execução que está autorizada a gravar no bucket. Essa configuração permite que você evite criar o bucket na conta de gerenciamento.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::<template bucket name>/*", "arn:aws:s3:::<template bucket name>" ], "Condition": { "StringEquals": { "aws:PrincipalOrgID": "<org id>" } } }, { "Effect": "Allow", "Principal": "*", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::<template bucket name>/*", "arn:aws:s3:::<template bucket name>" ], "Condition": { "ArnLike": { "aws:PrincipalArn": "arn:aws:iam::<execute_account_id>:role/<iam_role_name>" } } } ] }
Altere a política de bucket do S3 do ativo para incluir permissões. Atribua essa permissão a uma função do IAM na conta de execução que está autorizada a gravar no bucket. Repita essa configuração para cada bucket de ativos regional (por exemplo, asr-staging-us-east asr-staging-eu-west -1, -1 etc.), permitindo implantações em várias regiões sem precisar criar os buckets na conta de gerenciamento.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::<asset bucket name>-<region>/*", "arn:aws:s3:::<asset bucket name>-<region>" ], "Condition": { "StringEquals": { "aws:PrincipalOrgID": "<org id>" } } }, { "Effect": "Allow", "Principal": "*", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::<asset bucket name>-<region>/*", "arn:aws:s3:::<asset bucket name>-<region>" ], "Condition": { "ArnLike": { "aws:PrincipalArn": "arn:aws:iam::<execute_account_id>:role/<iam_role_name>" } } } ] }
4. Preparação da construção
-
Pré-requisitos:
-
AWS CLI v2
-
Python 3.11+ com pip
-
AWS CDK 2.171.1+
-
Node.js 20+ com npm
-
Poesia v2 com plugin para exportar
-
-
Clonagem do Git -aws.git https://github.com/aws-solutions/ automated-security-response-on
Primeiro, certifique-se de ter executado npm install na pasta de origem.
Em seguida, na pasta de implantação em seu repositório clonado, execute build-s3-dist.sh, passando o nome raiz do seu bucket (ex. mybucket) e a versão que você está criando (por exemplo, v1.0.0). Recomendamos usar uma versão semver com base na versão baixada de GitHub (ex. GitHub: v1.0.0, sua compilação: v1.0.0.mybuild)
chmod +x build-s3-dist.sh export SOLUTION_NAME=automated-security-response-on-aws export SOLUTION_VERSION=v1.0.0.mybuild ./build-s3-dist.sh -b $BASE_BUCKET_NAME -v $SOLUTION_VERSION
5. Implante pacotes no S3
cd deployment aws s3 cp global-s3-assets/ s3://$TEMPLATE_BUCKET_NAME/$SOLUTION_NAME/$SOLUTION_VERSION/ --recursive --acl bucket-owner-full-control aws s3 cp regional-s3-assets/ s3://$ASSET_BUCKET_NAME/$SOLUTION_NAME/$SOLUTION_VERSION/ --recursive --acl bucket-owner-full-control
Etapa 2: implantação de pilhas no AWS Control Tower
1. Crie um manifesto para componentes do ASR
Depois de implantar artefatos ASR nos buckets do S3, atualize o manifesto do pipeline do Control Tower para fazer referência à nova versão e, em seguida, acione a execução do pipeline, consulte: implantação da torre de controle
Importante
Para garantir a implantação correta da solução ASR, consulte a documentação oficial da AWS para obter informações detalhadas sobre a visão geral dos CloudFormation modelos e a descrição dos parâmetros. Links de informações abaixo: Guia de visão geral dos parâmetros dos CloudFormation modelos
O manifesto dos componentes do ASR tem a seguinte aparência:
region: us-east-1 #<HOME_REGION_NAME> version: 2021-03-15 # Control Tower Custom CloudFormation Resources resources: - name: <ADMIN STACK NAME> resource_file: s3://<ADMIN TEMPLATE BUCKET path> parameters: - parameter_key: UseCloudWatchMetricsAlarms parameter_value: "yes" - parameter_key: TicketGenFunctionName parameter_value: "" - parameter_key: LoadSCAdminStack parameter_value: "yes" - parameter_key: LoadCIS120AdminStack parameter_value: "no" - parameter_key: TargetAccountIDsStrategy parameter_value: "INCLUDE" - parameter_key: LoadCIS300AdminStack parameter_value: "no" - parameter_key: UseCloudWatchMetrics parameter_value: "yes" - parameter_key: LoadNIST80053AdminStack parameter_value: "no" - parameter_key: LoadCIS140AdminStack parameter_value: "no" - parameter_key: ReuseOrchestratorLogGroup parameter_value: "yes" - parameter_key: LoadPCI321AdminStack parameter_value: "no" - parameter_key: RemediationFailureAlarmThreshold parameter_value: "5" - parameter_key: LoadAFSBPAdminStack parameter_value: "no" - parameter_key: TargetAccountIDs parameter_value: "ALL" - parameter_key: EnableEnhancedCloudWatchMetrics parameter_value: "no" deploy_method: stack_set deployment_targets: accounts: # :type: list - <ACCOUNT_NAME> # and/or - <ACCOUNT_NUMBER> regions: - <REGION_NAME> - name: <ROLE MEMBER STACK NAME> resource_file: s3://<ROLE MEMBER TEMPLATE BUCKET path> parameters: - parameter_key: SecHubAdminAccount parameter_value: <ADMIN_ACCOUNT_NAME> - parameter_key: Namespace parameter_value: <NAMESPACE> deploy_method: stack_set deployment_targets: organizational_units: - <ORG UNIT> - name: <MEMBER STACK NAME> resource_file: s3://<MEMBER TEMPLATE BUCKET path> parameters: - parameter_key: SecHubAdminAccount parameter_value: <ADMIN_ACCOUNT_NAME> - parameter_key: LoadCIS120MemberStack parameter_value: "no" - parameter_key: LoadNIST80053MemberStack parameter_value: "no" - parameter_key: Namespace parameter_value: <NAMESPACE> - parameter_key: CreateS3BucketForRedshiftAuditLogging parameter_value: "no" - parameter_key: LoadAFSBPMemberStack parameter_value: "no" - parameter_key: LoadSCMemberStack parameter_value: "yes" - parameter_key: LoadPCI321MemberStack parameter_value: "no" - parameter_key: LoadCIS140MemberStack parameter_value: "no" - parameter_key: EnableCloudTrailForASRActionLog parameter_value: "no" - parameter_key: LogGroupName parameter_value: <LOG_GROUP_NAME> - parameter_key: LoadCIS300MemberStack parameter_value: "no" deploy_method: stack_set deployment_targets: accounts: # :type: list - <ACCOUNT_NAME> # and/or - <ACCOUNT_NUMBER> organizational_units: - <ORG UNIT> regions: # :type: list - <REGION_NAME>
2. Atualização do pipeline de código
Adicione um arquivo de manifesto a custom-control-tower-configuration um.zip e execute uma CodePipeline, consulte: visão geral do pipeline de código