Proteger o acesso aos recursos com o IAM
Os utilizadores e as contas de serviço do Kubernetes precisam de autorizações para gerir os recursos do Config Connector. Com o Config Connector, o plano de controlo do seu projeto pode ser gerido por identidades que usam o controlo de acesso baseado em funções (CABF) do Kubernetes. Também pode consultar as políticas de gestão de identidade e de acesso (IAM).
Os recursos que podem fazer referência a IAMPolicy e IAMPolicyMember estão listados na Referência de recursos. Estes recursos têm a propriedade "Can Be Referenced by IAMPolicy/IAMPolicyMember".
Este tópico explica como proteger o acesso aos Google Cloud recursos através da gestão de identidade e de acesso.
Antes de começar
Instale o Config Connector no seu cluster.
Proteger o acesso ao plano de controlo com CABF
Neste exemplo, vai criar uma conta de serviço e conceder-lhe autorizações para gerir um PubSubTopic
. Esta conta de serviço não pode gerir outros tipos de recursos do Config Connector.
Crie um ficheiro com o nome
pubsub-topic-service-account.yaml
com o seguinte conteúdo:apiVersion: v1 kind: ServiceAccount metadata: name: pubsub-topic-service-account namespace: default
Aplique este comando 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 espaço de nomes a partir do qual o Config Connector gere os recursos.Confirme que
pubsub-topic-service-account
não consegue criar recursosPubSubTopic
validando se o resultado do seguinte comando contémno
:kubectl auth can-i get pubsubtopics --as=system:serviceaccount:default:pubsub-topic-service-account
Em seguida, crie uma
ClusterRole
que permita a criação de tópicos do Pub/Sub.O ClusterRole só pode gerir recursos que tenham valores especificados em
rules.apiGroups
erules.resources
. Para encontrar valores paraapiGroups
eresources
, consulte a referência dos seus recursos.Crie um ficheiro denominado
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 o
pubsub-topic-editor.yaml
para criar oClusterRole
:kubectl apply -f pubsub-topic-editor-role.yaml --namespace CC_NAMESPACE
Substitua
CC_NAMESPACE
pelo espaço de nomes a partir do qual o Config Connector gere os recursos.Em seguida, crie uma RoleBinding entre o ClusterRole e a sua conta de serviço. Crie um ficheiro com o nome
pubsub-topic-editor-rolebinding.yaml
com o seguinte conteúdo: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 seu cluster.kubectl apply -f pubsub-topic-editor-rolebinding.yaml --namespace CC_NAMESPACE
Substitua
CC_NAMESPACE
pelo espaço de nomes a partir do qual o Config Connector gere os recursos.Confirme que o
pubsub-topic-service-account
tem autorização para criar recursosPubSubTopic
confirmando que o resultado do seguinte comando éyes
:kubectl auth can-i get pubsubtopics \ --as=system:serviceaccount:default:pubsub-topic-service-account
Limpar
Use kubectl delete
para remover a conta de serviço, a função do IAM e a associação de funções.
kubectl delete -f pubsub-topic-editor-rolebinding.yaml --namespace CC_NAMESPACE
kubectl delete -f pubsub-topic-editor-role.yaml --namespace CC_NAMESPACE
kubectl delete -f pubsub-topic-service-account.yaml --namespace CC_NAMESPACE
Substitua CC_NAMESPACE
pelo espaço de nomes a partir do qual o Config Connector gere os recursos.
Proteger o plano de dados com políticas IAM
Neste exemplo, usa as autorizações concedidas anteriormente para criar um PubSubTopic
e limitar o acesso ao mesmo com um recurso IAMPolicyMember
.
Crie um ficheiro denominado
pubsub-topic-sample.yaml
com o seguinte conteúdo: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 espaço de nomes a partir do qual o Config Connector gere os recursos.Crie um ficheiro denominado
iampolicymember.yaml
com o seguinte conteúdo, substituindoEMAIL_ADDRESS
pelo endereço de email da sua Google Cloud conta: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 o
iampolicymember.yaml
.kubectl apply -f iampolicymember.yaml --namespace CC_NAMESPACE
Substitua
CC_NAMESPACE
pelo espaço de nomes a partir do qual o Config Connector gere os recursos.Confirme se a política foi aplicada Google Cloud executando este comando e procurando o seu endereço de email no resultado, substituindo
PROJECT_ID
pelo ID do seu projeto:gcloud beta pubsub topics get-iam-policy projects/PROJECT_ID/topics/pubsubtopic-sample
O acesso aos seus tópicos do Pub/Sub está agora protegido com uma IAMPolicyMember
.
Limpar
Use kubectl delete
para remover o tópico Pub/Sub e o IAMPolicyMember do seu Google Cloud projeto.
kubectl delete -f iampolicymember.yaml --namespace CC_NAMESPACE
kubectl delete -f pubsub-topic-sample.yaml --namespace CC_NAMESPACE
O que se segue?
Use segredos para transmitir informações em segurança aos Google Cloud recursos.