Ir al contenido principal

De Visual Studio a Android Studio: Gestión segura de secretos con Secrets Gradle Plugin

De Visual Studio a Android Studio: Gestión segura de secretos con Secrets Gradle Plugin

Todo comenzó mientras trabajaba en un proyecto .NET en Visual Studio. Una de las herramientas que más valoré fue su sistema para manejar secretos: poder almacenar claves API y credenciales de manera segura, sin exponerlas en el código fuente, me daba tranquilidad. Cuando cambié de contexto y comencé a trabajar en un proyecto de Android con Kotlin, me pregunté: ¿Cómo puedo lograr algo similar aquí?

No pasó mucho tiempo antes de que encontrara la respuesta: el Secrets Gradle Plugin.


El problema: Secretos expuestos en el código fuente

Si alguna vez has trabajado con claves API o credenciales, sabes lo importante que es mantenerlas seguras. Sin embargo, es común encontrar proyectos donde estas claves se almacenan directamente en el código o en archivos de configuración que terminan siendo expuestos en el control de versiones. Esto no solo es un riesgo de seguridad, sino también una mala práctica.

Ahí es donde el Secrets Gradle Plugin entra en juego. Este plugin está diseñado específicamente para proyectos de Android y te permite gestionar tus secretos de forma segura, ocultándolos del código fuente y del control de versiones.


Configuración del Secrets Gradle Plugin

Paso 1: Instalar el plugin

Primero, agregué el plugin en el archivo build.gradle.kts a nivel de proyecto:


plugins {
    id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") version "2.0.1"
}

Luego, lo apliqué en el archivo app/build.gradle.kts del módulo principal:


plugins {
    id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
}

Paso 2: Crear un archivo para los secretos

El siguiente paso fue crear un archivo llamado secrets.properties en la raíz del proyecto. Aquí fue donde almacené mis claves API de manera segura:


MAPS_API_KEY=mi_clave_secreta
FIREBASE_KEY=otra_clave_secreta

Para asegurarme de que este archivo no se subiera al repositorio, añadí lo siguiente al archivo .gitignore:


secrets.properties

Paso 3: Acceder a los secretos en el código

Con el plugin configurado, acceder a las claves fue increíblemente sencillo. Primero, las expuse en el archivo de configuración de Gradle:


android {
    defaultConfig {
        buildConfigField("String", "MAPS_API_KEY", "\"${secrets.get("MAPS_API_KEY")}\"")
    }
}

Esto generó automáticamente una constante en la clase BuildConfig, que luego pude usar en mi código de esta manera:


val apiKey = BuildConfig.MAPS_API_KEY

Características avanzadas

El Secrets Gradle Plugin también ofrece características adicionales que lo hacen aún más útil:

  1. Propiedades específicas por variante de compilación:
    Puedes crear archivos separados para diferentes variantes, como release.properties, para usar claves específicas en caso de producción:
    
    MAPS_API_KEY=clave_para_release
        
  2. Archivo de valores por defecto:
    Puedes crear un archivo secrets.defaults.properties con valores seguros para usar en entornos de CI/CD o para compartir con otros desarrolladores:
    
    MAPS_API_KEY=clave_generica
        
  3. Ignorar claves específicas:
    Si hay claves que no deseas gestionar con el plugin, puedes ignorarlas fácilmente:
    
    secrets {
        ignoreList.add("sdk.*")
    }
        

El resultado: Seguridad con facilidad

Con este plugin, pude mantener mis claves seguras y fuera del control de versiones, sin complicaciones. Fue como traer la magia del manejo de secretos de Visual Studio a Android Studio. Pero lo mejor de todo es que el Secrets Gradle Plugin es fácil de usar y altamente configurable.


Conclusión

Si estás trabajando en un proyecto de Android y necesitas gestionar secretos de manera segura, el Secrets Gradle Plugin es la herramienta que estabas buscando. No solo protege tus claves, sino que también mejora la organización y la limpieza de tu proyecto.

¿Listo para dar el siguiente paso en la seguridad de tus aplicaciones? ¡Prueba el Secrets Gradle Plugin y disfruta de la tranquilidad de proteger tus secretos como nunca antes!

Comentarios

Entradas populares de este blog

Principios SOLID del Tio Bob

  Principios SOLID del Tio Bob Los principios sólidos son un conjunto de pautas de diseño de software que se centran en lograr código limpio, modular y mantenible. Estos principios fueron propuestos por Robert C. Martin (Uncle Bob) y se consideran fundamentales en el desarrollo de software orientado a objetos. Los cinco principios sólidos son los siguientes:   1. Principio de Responsabilidad Única (Single Responsibility Principle, SRP): Una clase debería tener una única responsabilidad. Esto significa que una clase debe tener una única razón para cambiar. Al tener una responsabilidad única, se logra un código más cohesivo y fácil de mantener.   2. Principio de Abierto/Cerrado (Open/Closed Principle, OCP): Las entidades de software (clases, módulos, etc.) deben estar abiertas para su extensión pero cerradas para su modificación. Esto significa que el comportamiento de una entidad puede ser extendido sin necesidad de modificar su código fuente original.  ...

Desarrollador junior C#

Habilidades que se esperan de un desarrollador junior (C#)   1.      Conocimientos básicos de programación: Debes tener una comprensión sólida de los conceptos fundamentales de programación, como variables, estructuras de control, bucles, funciones, etc. 2.      Dominio del lenguaje C#: Debes tener conocimientos sólidos del lenguaje C# y su sintaxis. Debes estar familiarizado con los conceptos orientados a objetos, como clases, herencia, polimorfismo, etc. 3.      Conocimientos de .NET Framework: C# se utiliza principalmente para el desarrollo en el entorno de .NET Framework, por lo que debes tener un conocimiento básico de esta plataforma, incluyendo las bibliotecas y clases comunes que se utilizan en el desarrollo de aplicaciones. 4.      Experiencia con Visual Studio: Visual Studio es el entorno de desarrollo integrado (IDE) más popular para C#. Debes estar familiarizado con su uso y ser capa...

Programación asíncrona comparación Kotlin y C#

La programación asíncrona es un enfoque en la programación que permite que las tareas se ejecuten de manera independiente y no bloqueante. En lugar de esperar a que una tarea se complete antes de pasar a la siguiente, las tareas se pueden ejecutar en paralelo o de manera secuencial, lo que mejora la eficiencia y la capacidad de respuesta de las aplicaciones. ¿Como implementar programación asíncrona en Kotlin? Usando Coroutines. Las coroutines en Kotlin son una forma de escribir código asíncrono de manera más concisa y legible. En lugar de bloquear el hilo principal mientras esperamos a que se complete una tarea, las coroutines permiten que el hilo siga ejecutándose mientras esperamos que una tarea asincrónica termine. Esto mejora la eficiencia y la capacidad de respuesta de las aplicaciones. Un ejemplo básico: KOTLIN import kotlinx.coroutines.* fun main() {     println("Inicio")     // Lanzar una coroutine     GlobalScope.launch {       ...