Como proteger o acesso a recursos com o IAM
Os usuários e as contas de serviço do Kubernetes precisam de permissões para gerenciar os recursos do Config Connector. Com o Config Connector, o estado do seu projeto plano de controle podem ser gerenciadas por identidades que usam o Kubernetes Controle de acesso baseado em papéis (RBAC). Também é possível se referir às políticas de gerenciamento de identidade e acesso (IAM, na sigla em inglês).
Os recursos que podem referenciar IAMPolicy e IAMPolicyMember estão listados na Referência de recursos. Esses recursos têm a propriedade "Pode ser referenciado pelo IAMPolicy/IAMPolicyMember".
Neste tópico, explicamos como proteger o acesso aos recursos do Google Cloud usando o gerenciamento de identidade e acesso.
Antes de começar
Para concluir as etapas nesta página, primeiro instale o Config Connector no seu cluster.
Como proteger o acesso do plano de controle com o RBAC
Neste exemplo, você criará uma conta de serviço e concederá permissões para
gerenciar um PubSubTopic
. Essa conta de serviço não pode gerenciar outros tipos de
recursos do Config Connector.
Crie um arquivo chamado
pubsub-topic-service-account.yaml
com o conteúdo a seguir:apiVersion: v1 kind: ServiceAccount metadata: name: pubsub-topic-service-account namespace: default
Aplique isso para criar a conta de serviço
pubsub-topic-service-account
:kubectl apply -f pubsub-topic-service-account.yaml --namespace CC_NAMESPACE
Substitua
CC_NAMESPACE
pelo namespace em que o Config Connector gerencia recursos.Confirme que
pubsub-topic-service-account
não pode criar recursosPubSubTopic
verificando se o resultado do comando a seguir contémno
:kubectl auth can-i get pubsubtopics --as=system:serviceaccount:default:pubsub-topic-service-account
Em seguida, crie um
ClusterRole
que permita a criação do tópico Pub/Sub.O ClusterRole só pode gerenciar recursos que têm valores especificados em
rules.apiGroups
erules.resources
. Para encontrar valores paraapiGroups
eresources
, consulte a referência dos recursos.Crie um arquivo chamado
pubsub-topic-editor-role.yaml
com o seguinte conteúdo:apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: null name: pubsub-topic-editor rules: - apiGroups: - pubsub.cnrm.cloud.google.com resources: - pubsubtopics verbs: - get - list - watch - create - update - patch - delete
Aplique
pubsub-topic-editor.yaml
para criar oClusterRole
:kubectl apply -f pubsub-topic-editor-role.yaml --namespace CC_NAMESPACE
Substitua
CC_NAMESPACE
pelo namespace em que o Config Connector gerencia recursos.Em seguida, crie um RoleBinding entre o ClusterRole e sua conta de serviço. Crie um arquivo chamado
pubsub-topic-editor-rolebinding.yaml
com o conteúdo a seguir:apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: pubsub-topic-editor-rolebinding. subjects: - kind: ServiceAccount name: pubsub-topic-service-account roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: pubsub-topic-editor
Aplique
pubsub-topic-editor-rolebinding.yaml
ao cluster.kubectl apply -f pubsub-topic-editor-rolebinding.yaml --namespace CC_NAMESPACE
Substitua
CC_NAMESPACE
pelo namespace em que o Config Connector gerencia recursos.Confirme se
pubsub-topic-service-account
tem permissão para criar recursosPubSubTopic
confirmando que o resultado do comando a seguir éyes
:kubectl auth can-i get pubsubtopics \ --as=system:serviceaccount:default:pubsub-topic-service-account
Como fazer a limpeza
Use kubectl delete
para remover a Conta de serviço, o Papel do Cloud IAM
e a Vinculação do papel.
kubectl delete -f pubsub-topic-editor-rolebinding.yaml --namespace <var>CC_NAMESPACE</var>
kubectl delete -f pubsub-topic-editor-role.yaml --namespace <var>CC_NAMESPACE</var>
kubectl delete -f pubsub-topic-service-account.yaml --namespace <var>CC_NAMESPACE</var>
Substitua CC_NAMESPACE
pelo namespace em que o Config Connector gerencia recursos.
Como proteger o plano de dados com políticas do IAM
Neste exemplo, você usa as permissões concedidas anteriormente
para criar um PubSubTopic
e limitar o acesso a ele com um recurso IAMPolicyMember
.
Crie um arquivo chamado
pubsub-topic-sample.yaml
com o conteúdo a seguir:apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic metadata: name: pubsubtopic-sample
Aplique
pubsub-topic-sample.yaml
comkubectl
:kubectl apply -f pubsub-topic-sample.yaml --namespace CC_NAMESPACE
Substitua
CC_NAMESPACE
pelo namespace em que o Config Connector gerencia recursos.Crie um arquivo chamado
iampolicymember.yaml
com o seguinte conteúdo, substituindoEMAIL_ADDRESS
pelo endereço de e-mail da sua conta do Google Cloud:apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: iampolicymember-sample spec: resourceRef: apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic name: pubsubtopic-sample role: roles/pubsub.admin member: "user:EMAIL_ADDRESS"
Aplique
iampolicymember.yaml
.kubectl apply -f iampolicymember.yaml --namespace CC_NAMESPACE
Substitua
CC_NAMESPACE
pelo namespace em que o Config Connector gerencia recursos.Confirme se a política foi aplicada ao Google Cloud executando este comando e procurando seu endereço de e-mail na saída, substituindo
PROJECT_ID
pelo ID do projeto:gcloud beta pubsub topics get-iam-policy projects/PROJECT_ID/topics/pubsubtopic-sample
O acesso aos temas do seu Pub/Sub agora está protegido com um IAMPolicyMember
.
Como limpar
Use kubectl delete
para remover o tema Pub/Sub e IAMPolicyMember
do seu Google Cloud Project.
kubectl delete -f iampolicymember.yaml --namespace CC_NAMESPACE
kubectl delete -f pubsub-topic-sample.yaml --namespace CC_NAMESPACE
A seguir
Use secrets para transmitir informações com segurança aos recursos do Google Cloud.