Security Graph Api

Es la parte de la Graph Api que contiene la api de recursos de Seguridad.

Funcionalidad


Ofrece una interfaz unificada que permite:

  • Security Detections: Agrega las alertas o amenazas de seguridad de diferentes productos de seguridad de Microsoft o de otros fabricantes.
  • Security Inventory: Facilita el acceso a la información contextual de estos productos, permitiendo entender las alertas o amenazas.
    • Acceder a la información: GET /security/{Host|User|File|App|IP}securityProfiles
  • Security Automation: Permite automatizar con runbooks políticas de seguridad en estos productos. Por ejemplo restringir accesos, resetear passwords, configurar firewalls…
    • Tomar una acción: POST /security/actions
    • Tomar una acción genérica (no depende del producto): POST /security/configuration

Enlaces utiles

Anuncios
Publicado en Graph, Seguridad | Deja un comentario

Glosario Graph Api

En una entrada anterior describí Graph Api. Vamos a añadir más información relacionada:

Operaciones

Se describen las operaciones que se pueden realizar con los recursos:

  • Obtener la lista de recursos: GET /users. Cuando la lista de recursos es grande, automáticamente se pagina. Enviándonos en la respuesta una link con la siguiente página; con el parámetro $skip.
  • Obtener un recurso: GET /users/{id}.
  • Crear un recurso: POST /users.
  • Actualizar un recurso: PATCH /users/{id}.
  • Borrar un recurso: DELETE /users/{id}.
  • Ejecutar otro tipo de operación sobre el recurso: POST /users/{id}/sendMail.
  • Ejecutar múltiples operaciones en una sola llamada (Batch): POST $bach en el body se ponen el conjunto de operaciones a realizar.
    {
      "requests": [
        {
          "url": "/me?$select=displayName,jobTitle,userPrincipalName",
          "method": "GET",
          "id": "1"
        },
        {
          "url": "/me/messages?$filter=importance eq 'high'&$select=from,subject,receivedDateTime,bodyPreview",
          "method": "GET",
          "id": "2"
        }
    }
    

QueryString

Enlace con la Lista completa de parámetros.

  • $expand={property},{property}: retorna las propiedades con toda la información; útil cuando estas son objetos.
  • $filter={condition}: retorna los recursos que cumplen la condición.
  • $select={property},{property}: retorna las propiedades seleccionadas.

Seguridad

Es necesario obtener un token de acceso. Define los derechos de acceso a los recursos, se pueden obtener en dos modalidades:

  • Como Usuario: Los permisos efectivos dependen de la intersección de los derechos concedidos por los usuarios o sus administradores y los derechos de la aplicación.
  • Como Servicio: Los derechos de la aplicación que concede el administrador del tenant. El administrador consiente a la aplicación del tenant:
    https://login.microsoft.com/{tenantId}/adminconsent?client_id={clientId}&state=12345&redirect_uri={redirectUrl|http://localhost}

Extensiones

Es posible añadir información personalizada a los recursos. Hay dos modalidades:

  • Open extensions: datos dinámicos. Por ejemplo crear una extensión: POST /users/{id}/extensions y en el post un objeto con nuestra información personalizada.
  • Schema extensions: datos estructurados. Para ello se define un tipo POST /schemaExtensions. Este tipo define unas propiedades e indica a que recursos es aplicable. Posteriormente en el recurso aplicado se puede trabajar con una propiedad con el nombre del tipo definido.

Webhooks y Delta

  • Webhooks: Informa a la aplicación de recursos creados, modificados o eliminados.
    Podemos ver la lista de suscripciones a eventos de aplicaciones que tenemos activas en graph con GET /subscriptons.
  • Delta: Permite realizar múltiples llamadas que conservan el estado anterior para mostrar tan solo los nuevos. Por ejemplo GET /users/delta? nos retorna un link con una url con deltatoken. Al solicitar este link si no se produce ningún cambio en los resultados nos retornará un lista vacía.
Publicado en Graph | Deja un comentario

Azure Cli

Es un lenguaje para realizar comandos en Azure, viene a competir con el clásico Azure PowerShell. La principales ventajas que aporta:

  • Disponible para Linux, Mac además de Windows.
  • Codigo abierto
  • Compatible con Groovy, Python, Ruby y otros lenguajes de scripting.

Parte común inicial de un script

#login to Azure Container Registry
az acr login --name [ACRName]   
#obtain value from column login server
az acr list --resource-group acrgroup --output table 
#select default subscription
az account set --subscription [SubscriptionId] 
#avoid to configure --resource-group in commands.
az configure --defaults group=[GroupName] 

Ejemplo de Creación de una WebApp

#create a Resource Group
az group create --name [GroupName] --location westeurope 
#create ServicePlan
az appservice plan create --name [ServicePlan]--resource-group [GroupName] --sku S1 
#create WebApp
az webapp create --name [WebAppName]--resource-group [GroupName] --plan [ServicePlan]

Ejemplo de Creación de una Base de Datos

#Create Server
az sql server create --admin-password [password] --admin-user [user] --location westeurope --name [ServerName] --resource-group [GroupName]
#Create Firewall Rule for Allow access from Azure Services
az sql server firewall-rule create --resource-group [GroupName] --server [ServerNameInLowerCase] -n AllowAzureServices --start-ip-address 0.0.0.0 --end-ip-address 0.0.0.0
#Create Firewall Rule for accessing to Server from Office
az sql server firewall-rule create --resource-group [GroupName] --server [ServerNameInLowerCase] -n [rulename] --start-ip-address [startip] --end-ip-address [endip]
#Create Database as Copy
az sql db copy --dest-name [DestinationDatabaseName] --dest-resource-group [DestinationGroupName] --dest-server [DestinantioServerName] --name [SourceDatabaseName] --resource-group [SourceGroupName] --server [SourceServerName]
Publicado en Azure, DevOps | Deja un comentario

Glosario de operativa de Docker

En la anterior entrada se explico la arquitectura de Docker. En esta entrada se describe los pasos básicos para ponerla en funcionamiento.

Guia Rápida de Comandos de Docker

.

  • docker –version: Versión de Docker.
  • docker version: Configuración del Docker Host disponible: Linux o Windows. Para cambiarlo sobre las propiedades del Docker Host.

    Cambiar la configuración del docker host a Container Linux.

  • docker info: Resumen general del Docker Host.
  • docker run hello-world: Container de ejemplo que se ejecuta “Hello world”.
  • docker ps: Containers ejecutándose en el Docker Host.
  • docker build -t [ContainerImageName] .: Crea una Container Image a partir del DockerFile.
  • docker images: Lista de Container Images creadas.
  • docker run [MultiplesParametros]: Crea el Container y lo ejecuta del Docker Host.
  • docker stop [ContainerNameOrId]: Para la ejecución del Container del Docker Host.
  • docker start [ContainerNameOrId]: Reinicia la ejecución del Container del Docker Host.
  • docker rm -f [ContainerNameOrId]: Para la ejecución y destruye el Container del Docker Host. No afecta la Container Image.
  • docker rmi : Elimina el Container Image del Docker Host.
  • docker tag [ContainerImageNameSource] [ContainerImageNameTarget]: Crea una nueva Container Image a partir de una Container Image.

Guia Rápida de DockerFile

  • FROM [ContainerImageBase]: Obtiene la Container Image base.
  • WORKDIR [Directorio]: Establece el directorio por defecto para otros comandos RUN, CMD, ENTRYPOINT y ADD.
  • COPY [Source] [Destination]: Copia de nuestro directorio en ruta relativa al Container Image.
  • ADD [Source] [Destination]: Copia de nuestro directorio, una Url o un Tar al Container Image.
  • RUN “[Ejecutable]”,”[Parametro1]”,”[Parametro2]”: Ejecuta un comando en el Container Image.
  • ENTRYPOINT [“[Ejecutable]”,”[Parametro1]”,”[Parametro2]”]: Establece un ejecutable que es el punto de entrada cuando se levante la Container Image creada. No puede ser sobrescrito al realizar el docker run aunque si sus parámetros.
  • CMD[“[Ejecutable]”,”[Parametro1]”,”[Parametro2]”]: Establece un ejecutable que es el punto de entrada cuando se levante la Container Image creada. Pero puede ser sobrescrito en el momento de realizar docker run [Comand] de la imagen.

Por ejemplo:

FROM microsoft/dotnet-framework:4.6.2
WORKDIR /app
COPY bin/Release/net462 .
ENTRYPOINT ["dotnetapp-4.6.2.exe"]

Guia Rápida de Comandos de Docker-compose

  • docker-compose –version: Versión de docker-compose.
  • docker-compose up: Crea la Container Image definida DockerFile (si previamente no exite). Crea y ejecuta la configuración de servicios en el cluster definida en el fichero docker-compose.yaml
  • docker-compose stop: Para la ejecución de los contenedores y destruye los Containers del Cluster. No afecta las Container Images.
  • docker-compose down: Para la ejecución de los contenedores y destruye los Containers del Cluster y las Container Images.

Guía Rápida de docker-compose.yaml

Es un fichero en formato YAML.

version: '3'
services:
  [NombreServicio]:
    build: .  #For DockerFile and take name of build image. 
#   build: [NameImage]    For not DockerFile.      

También es posible añadir compose.override.yml que complementa al compose.xml. La idea de compose.override.yml es añadir los parámetros específicos del entorno de ejecución.

Azure Container Registry (ACR)

Azure ofrece un registro privado donde almacenar nuestros Container Images.

  • Create ACR:
    #az login  #if we use Azure CLI
    az account list --output table #list subscriptions
    az account set --subscription [SubscriptionId] #select default subscription
    az group create --name [GroupName] --location westeurope #create a resource group
    az acr create --resource-group [GroupName] --name [ACRName]--sku Basic #create an azure container registry
    
  • Upload a Image to ACR:
    az acr login --name [ACRName]   #login to Azure Container Registry
    az acr list --resource-group acrgroup --output table #obtain value from column login server
    docker images #obtain the container images
    docker tag [ImageSource] [LoginServerUrl/ImageSource] #create new Container Image that contains connection to login server
    docker push [LoginServerUrl/ImageSource] #upload the Container Image to Azure Container Registry
    az acr repository list --name [ACRName]--output table #see the image on Azure Container Registry
    

Azure Container Service

Azure ofrece dos Servicios de Containers:

  • Azure Container Service (AKS): basado en el cluster de Kubernetes. Es el cluster que parece que se va imponer en el mercado. Para crearlo es mejor Azure Cloud Shell (ya que por el Portal de Azure se tienen que generar manualmente las claves SSH) 😉
    La principal ventaja de este Servicio es que se actualiza automáticamente por Azure. Pero por el momento no admite nodos Windows, es decir Container Images basadas en Windows.

    az login  #use Azure CLI in order to install kubercl on local machine
    az provider register -n Microsoft.ContainerService  #assign rights to use aks commands
    az provider register -n Microsoft.Compute
    az group create --name [GroupName] --location westeurope #create a resource group
    az aks create --resource-group [GroupName] --name [AKSName] --node-count 1 --generate-ssh-keys  #create the AKS
    az aks install-cli #download kubercl to local machine
    az aks get-credentials --resource-group=[GroupName] --name=[AKSName] #download de AKS credentials to local machine
    "c:\Program Files (x86)\kubectl" get nodes #test connection to AKS
    "c:\Program Files (x86)\kubectl create secret docker-registry [NameConfigurationSecret] --docker-server=[ServerAcrUrl] --docker-username=[UserAcr] --docker-password=8THfDltjerCKl=[PasswordAcr] --docker-email=[Email] #register connection to private container registry, see PD below.
    

    PD: Fix to connect to Azure Container Registry (ACR).

  • Azure Container Service (ACS): basado en Docker Swarm, DC/OS o Kubernetes. Para crearlo es mejor Azure Cloud Shell. El principal inconveniente es que somos responsables de actualizar el cluster; no acaba de ser un servicio ya que únicamente abarca el despliegue de la infraestructura.
    az login  #use Azure CLI in order to install kubercl on local machine
    az group create --name [GroupName] --location westeurope #create a resource group
    az acs create --orchestrator-type=kubernetes --resource-group [GroupName] --name=[ACSName] --agent-count=1 --generate-ssh-keys --windows --admin-username [UserAcs] --admin-password [PasswordAcs]  #create the ACS
    az acs kubernetes install-cli #download kubercl to local machine
    az acs kubernetes get-credentials --resource-group=[GroupName] --name=[ACSName] #download de ACS credentials to local machine
    "c:\Program Files (x86)\kubectl" get nodes #test connection to ACS
    "c:\Program Files (x86)\kubectl create secret docker-registry [NameConfigurationSecret] --docker-server=[ServerAcrUrl] --docker-username=[UserAcr] --docker-password=[PasswordAcr] --docker-email=[Email] #register connection to private container registry
    

Guia Rápida de Comandos de Kubernetes


Kubernetes incorpora un nuevo concepto Pod. Un Pod es la aplicación, configuración de red y storage que se añade al cluster (que puede estar compuesta de varios servicios en diferentes Containers). Podemos interactuar con el cluster mediante linea de comandos con kubectl.

  • kubectl cluster-info: Información del cluster.
  • kubectl get nodes: Lista de nodos en el cluster.
  • kubectl create secret docker-registry [NameConfigurationSecret] –docker-server=[ServerAcrUrl] –docker-username=[UserAcr] –docker-password=8THfDltjerCKl=[PasswordAcr] –docker-email=[Email]:
    Crea una configuración para permitir a Kubernetes acceder a repositiros de Container Images como Azure Container Registry.
  • kubectl create -f [file]: Crea y ejecuta la configuración de servicios en el cluster definida en el kubernetes manifest file.
  • kubectl get pods: Muestra los servicios en el cluster.
  • kubectl delete pod [NombrePod]: Elimina el servicio existen en el cluster.
  • kubectl describe pod [NombrePod]: Muestra el servicio y si ha existió algún problema en la creación se muestra trazas de eventos.
  • kubectl logs [NombrePob]: Muestra los logs (output) del servicio ejecutado.

Guía Rápida de Comandos de Minikube


Para trabajar en local; esta minikube muestra un cluster de kubernetes de un solo nodo. Por defecto configura kubectl para trabajar con él. De momento solo soporta nodo Linux, es decir no admite Container Images basadas en Windows.

  • minikube-windows-amd64.exe start –vm-driver=hyperv: Crea el cluster usando hyperv.
  • minikube-windows-amd64.exe dashboard: Abre Web con el Dashboard del cluster.
  • minikube-windows-amd64.exe delete: Destruye el cluster.

Guía Rápida de Kubernetes manifest file

Es un fichero en formato YAML.

apiVersion: v1
kind: Pod
metadata:
  name: [NombreServicio]
spec:
  containers:
  - name: [NombreServicio]
    image: [LoginServerUrl/ImageSource]
  restartPolicy: [RestarPolicy]      
  imagePullSecrects:
  - name: [NameConfigurationSecret]
  nodeSelector: 
    beta.kubernetes.io/os: windows

Por ejemplo:

apiVersion: v1
kind: Pod
metadata:
    name: dotnetapp462-app
spec:
    containers:
    - name: dotnetapp462-app
      image: acrnamepepe.azurecr.io/dotnetapp462_app
    restartPolicy: Never      
    imagePullSecrets:
    - name: acrnamepepesecret
    nodeSelector:
        beta.kubernetes.io/os: windows

Información adicional kubernetes

Publicado en DevOps | Deja un comentario

General Data Protection Regulation (GDPR)

Que es la GDPR?

Es la ley europea que regula los datos que recogen y analizan las empresas de los usuarios de la Unión Europea. El objetivo es regular la privacidad de los datos y la protección de los derechos sobre ellos. Entra en activo el 25 Mayo de 2018. Provoca que se deban actualizar los procesos de seguridad relacionados con los datos personales.

Cuales son los datos personales?

Aquellos que permiten identificar al usuario.

  • Identificación personal: nombre, id (dni), teléfono, dirección, datos bancarios…
  • Identificación física: genético, física, datos médicos…
  • Identificación digital: email, ips, cookies, user id,…

Que aplica sobre estos datos

  • Debe solicitarse para al usuario su consentimiento y este puede eliminarlo o rectificar los datos en cualquier momento.
  • Los datos no pueden salir de la empresa, salvo consentimiento explicito.
  • Asegurar la privacidad ((encriptación) y seguridad de los mismos. En caso violación de los datos, notificarse al agente supervisor y cuando reviste especial gravedad también a los usuarios.
Publicado en Seguridad | 2 comentarios

Productos de Seguridad Microsoft

Es un poco caótico; voy a intentar hacer un pequeña estructuración y resumen de la multitud de productos de seguridad disponibles. 😉

Office 365

  • Productos específicos para Exchange:
    • Exchange Online Protection (EOP): Evita spam (tanto evita el de entrada como el de envio) y adjuntos maliciosos (malware, virus…) en los mensajes de correo.
    • Office 365 Advanced Threat Protection (ATP): Evita los adjuntos maliciosos (malware, virus…) y enlaces no seguros en los mensajes de correo. Este incorpora características detección adjuntos maliciosos más avanzadas que no incorpora el anterior (EOP).
    • Exchange Online Archiving (EOA): Permite almacenar en la nube el correo a modo de backup, recuperación de mensajes borrados… Este se encuentra en otro almacén secundario (pst). Además incorpora funcionalidad de eDiscovery (permite verificar legalmente los correos).
  • Office 365 Data Loss Prevention (DLP): Permite controlar la información sensible (tarjetas de crédito, número de la seguridad social…) que circula en la empresa. Se audita tanto la información confidencial que se publica (SharePoint y OneDrive), se envía (Exchange) y/o se añade en las aplicaciones de Office (Outlook, Word, Excel y PowerPoint).
  • Azure Information Protection (AIP): Permite clasificar/etiquetar los documentos y mensajes basándose en recomendaciones (detección de información sensible) o clasificación directa por parte de los usuarios. En función de la clasificación permite su protección y compartición.
  • Office 365 Cloud App Security: Permite detectar uso anormal de los usuarios en aplicaciones cloud. Este incluye el subproducto especifico para Office 365:
  • Office 365 Lockbox: Permite controlar el acceso a la información cuando un agente de soporte accede a la información.

SQL Azure

Azure Active Directory (AAD)

Sistema Operativo

Azure

  • Azure Security Center: Permite auditar la seguridad de las maquinas, redes y servicios de Azure. Incorpora controles y protección frente ataques y exploits.
  • Azure Key Vault: Servicio que permite almacenar claves para las aplicaciones o servicios. Se describió en detalle en la entrada Azure Key Vault.
  • Azure site Recovery: Replica maquinas físicas/virtuales en otra ubicación de manera que si se produce un corte automáticamente se activa la replica.
  • Azure Backup y Recovery Services vault: Permite realizar backup de ficheros, servidores o base de datos en SQL en la nube.
  • Microsoft Antimalware: Extensión de seguridad que se añade a maquinas virtuales o Cloud Services de Azure para proteger del malware.
  • Azure DDoS Protection: Monitoriza el trafico evitando ataques DDOS a IPs por volumen y violación de protocolos capa de comunicación.
  • Web application firewall (WAF): Monitoriza el trafico evitando ataques en la capa de aplicación (inyección de SQL, cross site scripting y violación de HTTP).
  • Network Security Groups: Permite definir reglas de filtrado en la red; viene a ser al equivalente a firewall físico en un entorno de Azure.
  • Application Gateway: Balanceador de carga que permite la distribución del trafico entre varias maquinas y proteger frente a caídas de alguna maquina.
  • Storage Service Encryption: Permite encriptar los discos y datos del Azure storage.
Publicado en Azure, Seguridad, Sql Azure | Etiquetado , | 1 Comentario

Graph API

Graph API

La Graph API permite acceder a los múltiples servicios cloud de Microsoft (Azure Active Directory, Sharepoint, Exchange, OneDrive…) de una manera simple y unificada. Básicamente permite extender Office 365 mediante API.
El nombre de Graph es debido a que la información se obtiene navegando entre nodos. Por ejemplo del nodo usuario a su nodo de correos. Además incorpora Office Graph Insights que analiza el contenido, configuración y comportamiento del usuario. Y permite un acceso navegando mediante el análisis calculado.
Grafo de objetos Graph API
Hay disponibles SDK para diferentes lenguajes o Rest API.

Acceso Rest API

Se puede probar directamente en el Graph Explorer. Nota: Pulsando show more samples; podemos obtener más recursos sobre los que navegar.

Show more samples on Graph Explorer

Show more samples on Graph Explorer

  • Url: https://graph.microsoft.com/{version}/{resource}/{odata_query_parameters}
    • donde {versión} es v1.0 o beta.
    • donde {resource} indica el recurso. Por ejemplo: me (mi usuario), users (todos los usuarios), users/pepe@contonso.com (usuario pepe@consoto) , me/messages (mis correos)…
    • donde {odata_query_parameters} indica opcionalmente filtros adicionales. Por ejemplo: $select=ID (retorna únicamente el ID), $orderby=id&top=1 (retorna el primer id menor), $filter=givenname+eq+%27pepe%27 (objeto con la propiedad givenname igual a pepe)…
  • Http Method: el tipo de operación Get, Post… que queremos realizar.
  • Se accede mediante un token OAuth con el header Bearer en la petición.
  • Respuesta: JSON.
Publicado en Graph | 2 comentarios