Implemente uma app no GKE e veja estatísticas de segurança
Saiba como implementar um contentor intencionalmente vulnerável num cluster do GKE e obter estatísticas de segurança sobre a vulnerabilidade no painel de controlo da postura de segurança. O painel de controlo de postura de segurança do GKE apresenta informações sobre vulnerabilidades conhecidas do sistema operativo. Se também quiser a análise de idiomas para vulnerabilidades em pacotes Go ou Java, consulte o artigo Crie uma aplicação e veja estatísticas de segurança.
Objetivos
- Crie e envie uma aplicação contentorizada para o Artifact Registry através do Cloud Build.
- Crie um pipeline de fornecimento no Cloud Deploy.
- Implementar a aplicação num cluster do GKE de preparação e promovê-la para um cluster de produção.
- Veja estatísticas sobre vulnerabilidades na aplicação implementada através do painel de controlo de postura de segurança na Google Cloud consola.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Deploy, Google Kubernetes Engine, Container Security, and Container Analysis APIs:
gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com clouddeploy.googleapis.com container.googleapis.com containersecurity.googleapis.com containeranalysis.googleapis.com -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Deploy, Google Kubernetes Engine, Container Security, and Container Analysis APIs:
gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com clouddeploy.googleapis.com container.googleapis.com containersecurity.googleapis.com containeranalysis.googleapis.com Defina o ID do projeto como uma variável de ambiente:
export PROJECT_ID=$(gcloud config get project)
Defina a Google Cloud região predefinida para o Cloud Deploy:
gcloud config set deploy/region us-central1
Clone o repositório do GitHub que contém o código de exemplo para esta tarefa:
git clone https://github.com/googlecloudplatform/software-delivery-shield-demo-java.git cd ~/software-delivery-shield-demo-java/backend
Crie uma conta de serviço do IAM para o seu GKE
clusters a usar:
gcloud iam service-accounts create sds-runtime \ --display-name="Security insights with GKE service account"
Conceda autorizações à conta de serviço do IAM:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \ --role="roles/container.nodeServiceAccount" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \ --role="roles/clouddeploy.jobRunner" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \ --role="roles/container.developer" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \ --role="roles/artifactregistry.reader"
Conceda à conta de serviço predefinida do Compute Engine acesso aos clusters do GKE. O Cloud Deploy usa este acesso para implementar apps nos clusters no seu pipeline de entrega.
PROJECT_NUMBER="$(gcloud projects describe ${PROJECT_ID} --format='get(projectNumber)')" gcloud projects add-iam-policy-binding ${PROJECT_NUMBER} \ --member=serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \ --role=roles/container.developer
Crie o repositório:
gcloud artifacts repositories create containers \ --repository-format=docker \ --location=us-central1 \ --description="Security insights with GKE repository"
Verifique se o repositório existe:
gcloud artifacts repositories list \ --location=us-central1 \ --filter="REPOSITORY:containers"
O resultado apresenta o repositório
containers
que criou.Atualize o ficheiro de configuração do Cloud Deploy com o ID do seu projeto:
sed -i "s/PROJECT_ID/${PROJECT_ID}/g" clouddeploy.yaml
Registe o pipeline e os alvos:
gcloud deploy apply --file=clouddeploy.yaml
Para verificar se o pipeline existe, aceda à página Pipelines de entrega na consola Google Cloud :
A lista de pipelines apresenta o seu novo pipeline,
guestbook-app-delivery
.Clique no nome do pipeline para monitorizar o progresso. É apresentada a página Detalhes do pipeline de fornecimento.
Crie um novo lançamento no Cloud Deploy:
gcloud deploy releases create guestbook-release-001 \ --delivery-pipeline=guestbook-app-delivery \ --images=java-guestbook-backend=us-central1-docker.pkg.dev/${PROJECT_ID}/containers/java-guestbook-backend:quickstart
O novo lançamento aparece na secção Lançamentos da página Detalhes do pipeline de envio.
Na página Detalhes do pipeline de fornecimento, monitorize a vista Visualização do pipeline até o botão Promover ser apresentado para
dev-cluster
. Pode ter de atualizar a página.Clique em Promover na visualização
dev-cluster
.No painel Promover lançamento, clique em Promover para confirmar a promoção ao cluster de produção.
Para verificar se o lançamento foi bem-sucedido, consulte a secção Lançamentos. A coluna Estado da implementação mais recente apresenta
Successfully deployed to prod-cluster
.Aceda à página GKE security posture na Google Cloud consola.
Para ver os resultados da análise, atualize a página. A análise inicial pode demorar até 15 minutos.
Na página GKE security posture, reveja a secção Workload OS vulnerability. Esta secção apresenta as principais CVEs que afetam a sua carga de trabalho implementada.
Para ver detalhes, clique em Ver todas as preocupações com vulnerabilidades. O separador Preocupações é aberto e aplica um filtro para o tipo de preocupação Vulnerabilidade. A tabela mostra uma vista geral de cada vulnerabilidade e do respetivo impacto.
Para ver detalhes sobre uma vulnerabilidade específica, clique no nome da preocupação na tabela. É aberto o painel Vulnerabilidade. Neste painel, pode fazer o seguinte:
- Leia uma descrição detalhada do CVE, incluindo as versões e os pacotes afetados, bem como a classificação CVSS.
- Veja as ações recomendadas para mitigar a preocupação, como documentação e informações da versão da correção.
- Veja as cargas de trabalho específicas que são afetadas pela vulnerabilidade no separador Cargas de trabalho afetadas.
Elimine o pipeline do Cloud Deploy:
gcloud deploy delivery-pipelines delete guestbook-app-delivery --force
Elimine os clusters do GKE:
gcloud container clusters delete dev-cluster \ --region=us-central1 gcloud container clusters delete prod-cluster \ --region=us-central1
Elimine o repositório do Artifact Registry:
gcloud artifacts repositories delete containers \ --location=us-central1
Elimine a conta de serviço do IAM:
gcloud iam service-accounts delete sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com
Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.
Prepare o seu ambiente
Crie o repositório do Artifact Registry para a sua imagem
Crie os clusters do GKE
Crie dois clusters do GKE, um cluster de preparação denominado dev-cluster
e um cluster de produção denominado prod-cluster
. No Autopilot, a análise de vulnerabilidades da carga de trabalho é ativada automaticamente para novos clusters que executam a versão 1.27 e posteriores. Se usar um cluster padrão, especifique a flag --workload-vulnerability-scanning=standard
.
gcloud container clusters create-auto dev-cluster \
--region=us-central1 \
--release-channel=rapid \
--service-account=sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com
gcloud container clusters create-auto prod-cluster \
--region=us-central1 \
--release-channel=rapid \
--service-account=sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com
A criação de clusters pode demorar até cinco minutos. Também pode ativar a análise de vulnerabilidades da carga de trabalho atualizando os clusters do GKE existentes.
Crie a imagem
Crie e envie a imagem através do Cloud Build:
gcloud builds submit --region us-central1 --config cloudbuild.yaml
Quando a compilação estiver concluída, o resultado é semelhante ao seguinte:
DONE
-----------------------------------------------------------------------------
ID: 3e23094f-7f57-4449-bc68-51c37hn34d03
CREATE_TIME: 2022-09-19T15:41:07+00:00
DURATION: 54S
SOURCE: gs://my-project_cloudbuild/source/1663602066.777581-6ebe4b2d6fd741ffa18936d7f.tgz
IMAGES: us-central1-docker.pkg.dev/PROJECT_ID/containers/java-guestbook-backend:quickstart
STATUS: SUCCESS
Implemente a imagem no GKE através do Cloud Deploy
Veja vulnerabilidades
Nesta secção, veja estatísticas de vulnerabilidades do SO através do painel de controlo de postura de segurança. O painel de controlo apresenta informações sobre vulnerabilidades nas cargas de trabalho em execução depois de as implementar nos clusters.
Limpar
Para evitar incorrer em custos na sua Google Cloud conta pelos recursos usados nesta página, elimine o Google Cloud projeto com os recursos.
Elimine recursos individuais
Elimine o projeto
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID