Componentes do Enterprise Blueprint Factory - AWS Orientação prescritiva

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á.

Componentes do Enterprise Blueprint Factory

O Enterprise Blueprint Factory consiste nos seguintes componentes:

  • Repositório de produtos — Um repositório onde você armazena os blueprints.

  • Repositório de configuração — Um repositório onde você armazena o arquivo de configuração que define seus AWS Service Catalog portfólios e produtos.

  • Arquivo de configuração — O arquivo de configuração que define quais blueprints estão disponíveis, quem pode usá-los e como eles podem usá-los.

  • Pipeline de configuração — um pipeline de DevOps CI/CD que configura o portfólio e os compartilhamentos do portfólio do Service Catalog e cria um pipeline de lançamento para cada produto.

  • Pipeline de lançamento — um pipeline de DevOps CI/CD que libera blueprints como produtos do Service Catalog. 

A equipe de infraestrutura de nuvem normalmente gerencia o Enterprise Blueprint Factory geral porque precisa aprovar cada plano. No entanto, a equipe de DevOps código geralmente é responsável pelo pipeline de configuração e pelo pipeline de lançamento. Para lançar novos esquemas, os desenvolvedores interagem somente com o repositório do produto, o repositório de configuração e o arquivo de configuração.

Repositório de produtos

O repositório de produtos é um local centralizado onde você armazena os planos aprovados pela sua organização.  Uma equipe administrativa e uma equipe de segurança do blueprint analisam as pull requests para esse repositório para garantir que cada blueprint atenda aos requisitos organizacionais e de segurança. Neste guia, usamos GitHub para o repositório, mas você pode usar uma alternativa.

Repositório de configuração

O repositório de configuração (repositório de configuração) é o local em que sua organização armazena o arquivo de configuração para seus portfólios e produtos do Service Catalog que são lançados por meio do Enterprise Blueprint Factory. Neste guia, usamos GitHub para o repositório, mas você pode usar uma alternativa.

Arquivo de configuração

O arquivo de configuração do Enterprise Blueprint Factory (arquivo de configuração) é armazenado no repositório de configuração, que é de propriedade da equipe administrativa do blueprint. O nome desse arquivo é bp_config.yml. Quando um desenvolvedor atualiza esse arquivo, a equipe administrativa do blueprint analisa as alterações. A fusão das alterações na ramificação principal inicia o pipeline de configuração. O arquivo de configuração orquestra a publicação, o compartilhamento e a distribuição de todos os blueprints gerenciados por meio do Enterprise Blueprint Factory.

O arquivo de configuração é um arquivo YAML que consiste em dois objetos principais: e. portfolios products Veja a seguir um exemplo de um exemplo de arquivo de configuração:

portfolios: - portfolio_name: blueprint-portfolio owner: Blueprint-team provider_name: AWS description: "Blueprint portfolio" portfolio_access_role: - arn:aws:iam::123456789012:role/examplerole - arn:aws:iam::123456789012:user/exampleuser share_to_ou: - org_id: "o-exampleOrgID" stack_tags: DataClassification: Confidential Organization: AWS products: - name: BP-S3-Product description: "Blueprint for BP-S3 product" product_config_file: 'BP-S3/product_config.json' owner: Blueprint-team stack_tags: DataClassification: Confidential Organization: AWS portfolio_associations: - blueprint-portfolio launch_constraint_role: arn:aws:iam::123456789012:role/examplelaunchrole

No portfolios objeto, você define seus portfólios de destino do Service Catalog. Para cada portfólio, você fornece os seguintes atributos:

  • portfolio_nameé o nome do portfólio. Esse atributo é obrigatório.

  • owneré o nome da equipe proprietária do portfólio. Esse atributo é opcional.

  • provider_nameé o nome da equipe ou organização que gerencia o portfólio. O valor padrão é AWS. Esse atributo é obrigatório.

  • descriptioné uma breve descrição do portfólio. Esse atributo é opcional.

  • portfolio_access_rolessão as identidades AWS Identity and Access Management (IAM) (usuários, funções ou grupos) que têm permissão para acessar o portfólio e seus produtos associados. Esse atributo é opcional.

  • share_to_oué a unidade organizacional (OU) na AWS Organizations qual o portfólio é compartilhado. Os usuários finais podem implantar os produtos desse portfólio nos Contas da AWS quais são membros da UO de destino. Esse atributo é opcional.

  • stack_tagssão as tags aplicadas ao portfólio. Esse atributo é opcional.

No products objeto, você define cada blueprint que deseja lançar como um produto no Service Catalog. Para cada produto, você fornece os seguintes atributos:

  • nameé o nome do produto no Service Catalog. Esse atributo é obrigatório.

  • descriptioné uma breve descrição do produto. Esse atributo é obrigatório.

  • product_config_fileé o nome do arquivo de configuração do produto blueprint que está armazenado no repositório do produto. Esse atributo é obrigatório.

  • owneré o nome da equipe proprietária do produto. Esse atributo é obrigatório.

  • stack_tagssão as etiquetas aplicadas ao produto. Esse atributo é opcional.

  • portfolio_associationssão os portfólios-alvo que contêm o produto. Esse atributo é opcional.

    nota

    Recomendamos que você adicione produtos somente aos portfólios gerenciados por meio do Enterprise Blueprint Factory. Se você quiser adicionar produtos aos portfólios que não são gerenciados pelo Enterprise Blueprint Factory, a política de IAM do usuário deve permitir a AssociateProductWithPortfolioação. No entanto, como prática recomendada de segurança, recomendamos que você permita essa ação somente para o pipeline de configuração do Enterprise Blueprint Factory.

  • launch_constraint_roleé a função de lançamento que o Service Catalog assume quando um usuário final lança o produto. Esse atributo é obrigatório.

Pipeline de configuração

O pipeline de configuração (config pipeline) automatiza a configuração do portfólio e dos compartilhamentos do portfólio do Service Catalog. Ele também cria o pipeline de lançamento para cada produto. Esse pipeline é um AWS CodePipelinerecurso. Uma atualização no arquivo de configuração invoca o pipeline de configuração.

Na primeira vez que você invoca o pipeline de configuração, ele cria dois portfólios adicionais que não estão definidos no seu arquivo de configuração:

  • Blueprint-portfolio— Cada produto que você implanta por meio do Enterprise Blueprint Factory é adicionado a esse portfólio. Esse portfólio está disponível para os diretores e unidades organizacionais do IAM que você especifica no arquivo de configuração.

  • Bootstrapping-Admin-Portfolio— O Bootstrapping-Admin-Product produto está associado a esse portfólio. Este produto é um CloudFormation modelo para o pipeline de lançamento. Permita que somente a equipe administrativa do blueprint acesse esse portfólio para que ela possa gerenciar produtos administrativos.

Etapas do pipeline de configuração

A imagem a seguir mostra os estágios do pipeline de configuração e os recursos com os quais o pipeline interage. Cada estágio do pipeline é um AWS CodeBuildprojeto.

Os estágios do pipeline de configuração do Enterprise Blueprint Factory.

A seguir estão os estágios do pipeline de configuração:

  1. Implantar portfólios — O pipeline de configuração implanta todos os portfólios que foram adicionados ao arquivo de configuração ou exclui todos os portfólios que foram removidos do arquivo de configuração. Se não houver alterações nos portfólios, o pipeline pulará esse estágio.

  2. Compartilhe portfólios — O pipeline de configuração compartilha os portfólios com as unidades organizacionais de destino (). OUs Se não houver alterações nas ações do portfólio, o pipeline pulará esse estágio.

  3. Implantar Blueprint-Admin-Bootstrapping-Product — O pipeline de configuração busca o bp-pipeline blueprint do ServiceCatalog-CodeRepo repositório e o implanta no Service Catalog como. Bootstrapping-Admin-Product Esse produto é o CloudFormation modelo usado para criar um pipeline de lançamento. A implantação desse modelo como um produto do Service Catalog ajuda a manter o controle de versão. Se não houver alterações no bp-pipeline blueprint, o pipeline pulará esse estágio.

  4. Crie pipelines de lançamento — Com base nos atributos do produto no arquivo de configuração, o pipeline de configuração prepara os parâmetros da pilha e inicia uma CloudFormation pilha que cria um pipeline de lançamento para o produto. Para obter mais informações, consulte Release pipeline neste guia.

  5. Implantar produtos — O pipeline de lançamento implanta o blueprint como um produto do Service Catalog e o associa ao portfólio de destino. Agora, os usuários finais podem implantar o produto em Contas da AWS membros da UO de destino.

Pipeline de liberação

O pipeline de lançamento automatiza o lançamento de blueprints como produtos do Service Catalog. Esse pipeline é um AWS CodePipelinerecurso. Quando sua organização deseja lançar um novo blueprint, um desenvolvedor carrega o modelo de IaC e o arquivo de configuração do produto no repositório do produto. Adicionar os detalhes do produto ao arquivo de configuração aciona o pipeline de configuração. O pipeline de configuração cria um pipeline de lançamento para esse blueprint. Qualquer atualização subsequente do blueprint acionará esse pipeline de lançamento para atualizar o produto no Service Catalog com uma nova versão.

O pipeline de lançamento inclui controles proativos que automatizam as verificações de segurança e conformidade de seus planos. Os controles proativos são projetados para evitar a criação de recursos não compatíveis. Esses controles podem reduzir o número de eventos de segurança manipulados por outros tipos de controles de segurança, como controles responsivos e de detetive. Como os controles proativos garantem que os recursos implantados estejam em conformidade antes de serem implantados, não há nenhum evento de detecção que exija resposta ou correção.

Na primeira vez que você invoca o pipeline de configuração, ele cria um produto Service Catalog chamadoBootstrapping-Admin-Product. Este produto é o CloudFormation modelo para o pipeline de lançamento. Conforme mostrado na figura a seguir, o pipeline de configuração usa o Bootstrapping-Admin-Product produto para criar um pipeline de lançamento dedicado para cada novo blueprint. Existe uma one-to-one relação entre os projetos e os pipelines de lançamento.

O pipeline de configuração usa um produto para criar um pipeline de lançamento para cada blueprint.

Etapas do pipeline de lançamento

A imagem a seguir mostra os estágios padrão no pipeline de lançamento e os recursos com os quais o pipeline interage. Cada estágio do pipeline é um CodeBuild projeto.

As etapas do pipeline de lançamento do Enterprise Blueprint Factory.

A seguir estão os estágios do pipeline de lançamento:

  1. Alinhamento do arquivo — Esse estágio verifica se o blueprint é um CloudFormation modelo ou uma construção. AWS Cloud Development Kit (AWS CDK) Se o projeto for uma AWS CDK construção, esse estágio sintetiza a AWS CDK construção em um modelo. CloudFormation Esse processo automatiza e padroniza as implantações por meio de. CloudFormation Se algum erro for encontrado, o pipeline falhará.

  2. Verificação de sintaxe — O erro de sintaxe é uma causa comum de erros de CloudFormation implantação. Nesse estágio, o AWS CloudFormation Linter (cfn-lint) verifica erros de sintaxe comparando o modelo com a especificação do recurso.AWS CloudFormation Ele também executa outras verificações, como a verificação de valores válidos para as propriedades dos recursos e a adesão às melhores práticas. Se algum erro for encontrado, o pipeline falhará e o cfn-lint retornará sugestões.

  3. Verificação de controle — Neste estágio, cfn_nag verifica possíveis problemas de segurança pesquisando padrões. Por exemplo, ele verifica grupos de segurança e políticas AWS Identity and Access Management (IAM) excessivamente permissivos, criptografia ausente e literais de senha. Se algum erro for encontrado, o pipeline falhará e cfn_nag retornará sugestões.

  4. Verificação de versão — O pipeline de lançamento executa o controle de versão com base na estratégia de versão definida no arquivo de configuração do produto. Se a versão do produto for definida como imutável, o Service Catalog inativará a versão anterior do produto.

  5. Publicar produto — O pipeline de lançamento libera o produto no Service Catalog.

nota

O pipeline de lançamento é personalizável. Por exemplo, você pode remover qualquer estágio que não seja aplicável ao seu caso de uso. Você também pode adicionar mais estágios se quiser adicionar outras verificações de controle, validações adicionais ou uma etapa de aprovação manual. Este guia não inclui instruções para modificar o pipeline de lançamento. Para obter mais informações, consulte CodePipelinea CodeBuilddocumentação e.