google-cloud-iam

Cloud IAM: Comandos útiles para administrar recursos en GCP

Whats Up!!! Guys. 

Aqui estoy de nuevo con un post que me parecio interesante para compartir con ustedes algunos comandos relacionados con la administración de Cloud IAM en GCP. 

So, let’s get started!

¿Qué es Cloud IAM?

Cloud IAM es el servicio que administra la identidad y el acceso en Google Cloud Platform. Basicamente puedes crear los permisos para identificar quien puede hacer algo, con que puede hacerlo y que puede hacer. En GCP tienes muchos recursos, entre ellos, maquinas virtuales, servicios, redes, apis, storage,etc. Pero todos esos recursos requieren permisos de acceso y seguridad. Como SysAdmin o SRE tambien debes garantizar que los usuarios (ejemplo un equipo de Devs o DEvOps) tengan los permisos apropiados para trabajar logrando dos objetivos:

1. La independencia al trabajar sin que esten requiriendo de tus servicios.

2. La seguridad de que no vayan a dañar algo por tener el permiso o privilegio inadecuado. 

Tipos de roles

En Cloud IAM tenemos 3 tipos de roles básicos con los que podemos jugar:

  • Primitives Role : Se refiere a los permisos que Google ya ha definido de manera global. Son el rol de propietario, Editor y Visor (Owner,Editor,Viewer) 
  • Predifined Roles: Son Roles que te dan accesos mas granulares o detallados y no tan generales como los roles primitivos. Un Ejemplo básico es el role/Compute.Instance.Admin que te permite admiinstrar las instancia en Compute Engine. 
  • Custom Roles: Roles que puedo crear y configurar de acuerdo a mis necesidades. Puedo crearme un role para mi equipo DevOps que les permita crear y administrar maquinas virtuales pero, por ejemplo que no permita eliminar Discos virtuales o Buckets en mi proyecto. 
Y aqui va el primer comando que puede ser util para buscar el role predefinido que necesitemos crear:
 
				
					gcloud iam roles list | grep "name:" 
				
			

Este comando nos lista todos los roles predefinidos por nombre en nuestro Cloud SDK. Ahora, si nos parece que la lista que muestra es muy larga, podemos agregar un «more» y verlos detalladamente. 

				
					gcloud iam roles list | grep "name:" | more
				
			

Sin embargo, aveces requerimos buscar por determinado serivicio. Por ejemplo, si queremos listar los roles del servicio de compute engine. tendriamos que usar algo asi: 

				
					gcloud iam roles list --filter "name ~ roles/compute.*" --format 'value(name)'
				
			

Cambiando entre dos Usuarios

En nuestra larga vida que vamos a tener en la era del Cloud antes de que la AI reemplace por completo nuestro trabajo (Por ahora es mito), vamos a tener que estar cambiando entre usuarios dentro de un cloud shell o usando el SDK. ¿Como lo hacemos? con el siguiente comando:

				
					gcloud init --no-launch-browser
				
			

La anterior linea de dara un enlace para copiarlo y pegarlo en un navegador con el cual vas a iniciar sesion con el segundo usuario y luego te pedira un codigo de verificacion, tal y como lo muestra la siguiente imagen

Pegas el código y listo ya estarás iniciado con la segunda cuenta de usuario. Con esto no tendrás que estar abriendo y cerrando ventanas de diferentes usuarios. Es más, como te pedirá un nombre para la nueva conexión que vas a tener, ahora puedes simplemente cambiar con la siguiente linea

				
					gcloud config configurations activate user1
				
			

Creando un Custom Role

Ahora que tal si necesitamos crear un role personalizado con permisos especificos. Let’s do it..

Diseñaremos un rol llamado «Devs» con los permisos de administrar instancias en compute engine. 

Primero vamos a crear una variable de entorno que guarde el proyecto en el que estamos trabajando

				
					echo "export MYPROJECT=<My project id>" >> ~/.bashrc
				
			

Este comando crea la variable de entorno MYPROJECT y guarda el ID del proyecto. Lo enviamos al archivo .bashrc para que guarde nuestra variable de entorno en el perfil de usuario que estamos trabajando. Esto es muy util cuando estamos cambiando entre usuarios o cuentas en nuestros proyectos de google cloud.

Ahora pasamos a crear nuestro custom rol con la siguiente linea

				
					gcloud iam roles create devs --project $MYPROJECT --permissions "compute.instances.create,compute.instances.delete,compute.instances.start,compute.instances.stop,compute.instances.update,compute.disks.create,compute.subnetworks.use,compute.subnetworks.useExternalIp,compute.instances.setMetadata,compute.instances.setServiceAccount"
				
			

Si no hás trabajado mucho con Cloud Shell o el SDK, no te preocupes,  tampoco es cosa del otro mundo. simplemente hemos hecho lo siguiente:

  • gcloud Iam roles create = Es la utilidad para crear el rol . Devs es el nombre que yo decidí darle.
  • –Project = Es la Flag (bandera) que uso para llamar a mi proyecto. En este caso estoy llamando a la variable que creamos llamada $MYPROJECT.
  • –Permisions= Otra Flag para escribir los permisos que le vamos a aplicar al rol. 
Y toda la linea de permisos la sacamos desde el comando que explique anteriormente para listar los roles predefinidos. 

Configurando el rol a un usuario

Ahora que ya hemos creado el Custom rol. Necesitamos asignarle a un usuario ese rol para que pueda tomar los permisos. Para ello podemos usar la siguiente linea

				
					gcloud projects add-iam-policy-binding $MYPROJECT --member user:$USERID --role=projects/$PROJECTID2/roles/devs
				
			

Lo unico diferente que tiene la linea es que he guardado el usuario en una variable de entorno y he llamado a la variable. Pero perfectamente podrías poner el user id completo en la ruta. 

Bueno chicos y chicas esto fue todo lo que tengo por hoy. 

Les agradezco si comparten el contenido para que mas personas puedan verlo y tambien porque no contribuir, comentar o insultar a este «IT Geek» que solo pretende compartir un poco con el mundo exterior. 

 

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Jukajo's Blog

Leave a Comment