Proteger o acesso aos recursos com o IAM
Os utilizadores e as contas de serviço do Kubernetes precisam de autorizações para gerir 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 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.yamlcom o seguinte conteúdo:apiVersion: v1 kind: ServiceAccount metadata: name: pubsub-topic-service-account namespace: defaultAplique 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_NAMESPACEpelo espaço de nomes a partir do qual o Config Connector gere os recursos.Confirme que
pubsub-topic-service-accountnão consegue criar recursosPubSubTopicvalidando 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
ClusterRoleque permita a criação de tópicos do Pub/Sub.O ClusterRole só pode gerir recursos que tenham valores especificados em
rules.apiGroupserules.resources. Para encontrar valores paraapiGroupseresources, consulte a referência dos seus recursos.Crie um ficheiro denominado
pubsub-topic-editor-role.yamlcom 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 - deleteAplique o
pubsub-topic-editor.yamlpara criar oClusterRole:kubectl apply -f pubsub-topic-editor-role.yaml --namespace CC_NAMESPACE
Substitua
CC_NAMESPACEpelo 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.yamlcom 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-editorAplique
pubsub-topic-editor-rolebinding.yamlao seu cluster.kubectl apply -f pubsub-topic-editor-rolebinding.yaml --namespace CC_NAMESPACE
Substitua
CC_NAMESPACEpelo espaço de nomes a partir do qual o Config Connector gere os recursos.Confirme que o
pubsub-topic-service-accounttem autorização para criar recursosPubSubTopicconfirmando 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.yamlcom o seguinte conteúdo:apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic metadata: name: pubsubtopic-sampleAplique
pubsub-topic-sample.yamlcomkubectl:kubectl apply -f pubsub-topic-sample.yaml --namespace CC_NAMESPACE
Substitua
CC_NAMESPACEpelo espaço de nomes a partir do qual o Config Connector gere os recursos.Crie um ficheiro denominado
iampolicymember.yamlcom o seguinte conteúdo, substituindoEMAIL_ADDRESSpelo endereço de email Google Cloud da sua 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_NAMESPACEpelo 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_IDpelo 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.