Configure un grupo de agentes de datos para utilizar un almacén HashiCorp externo
Cuando creas una relación de sincronización que requiera credenciales de Amazon S3, Azure o Google Cloud, tienes que especificar esas credenciales a través de la interfaz de usuario o la API de copia y sincronización de BlueXP. Una alternativa es establecer el grupo de corredores de datos para acceder a las credenciales (o Secrets) directamente desde un almacén externo de HashiCorp.
Esta función es compatible con la API de copia y sincronización de BlueXP con relaciones de sincronización que requieren credenciales de Amazon S3, Azure o Google Cloud.
Prepare el almacén para proporcionar credenciales al grupo de Data broker configurando las direcciones URL. Las direcciones URL de los secretos del almacén deben terminar con creds.
Prepare el grupo de Data broker para recuperar credenciales del almacén externo modificando el archivo de configuración local de cada agente de datos del grupo.
Ahora que todo está configurado, puede enviar una llamada a la API para crear una relación de sincronización que utilice su almacén para obtener los secretos.
Prepare el almacén
Tendrás que proporcionar copia y sincronización de BlueXP con la URL de los secretos de tu almacén. Prepare el almacén configurando esas URL. Debe configurar URL para las credenciales de cada origen y destino en las relaciones de sincronización que desea crear.
La dirección URL debe configurarse de la siguiente manera:
/<path>/<requestid>/<endpoint-protocol>Creds
- Ruta
-
La ruta del prefijo al secreto. Puede ser cualquier valor que sea exclusivo de usted.
- ID de solicitud
-
Un ID de solicitud que debe generar. Deberá proporcionar el ID en uno de los encabezados de la solicitud POST de API al crear la relación de sincronización.
- Protocolo de extremo
-
Uno de los siguientes protocolos, tal como se ha definido "en la documentación de post relationship v2": S3, AZURE o GCP (cada UNO debe estar en mayúscula).
- Credos
-
La dirección URL debe terminar con creds.
Ejemplos
En los ejemplos siguientes se muestran las direcciones URL de los secretos.
- Ejemplo de la URL completa y la ruta de acceso para las credenciales de origen
-
http://example.vault.com:8200/my-path/all-secrets/hb312vdasr2/S3Creds
Como puede ver en el ejemplo, la ruta de acceso de prefijo es /my-path/all-Secrets/, el ID de solicitud es hb312vdasr2 y el extremo de origen es S3.
- Ejemplo de la URL completa y la ruta para las credenciales de destino
-
http://example.vault.com:8200/my-path/all-secrets/n32hcbnejk2/AZURECreds
La ruta del prefijo es /my-path/all-Secrets/, el ID de la solicitud es n32hcbnejk2 y el extremo de destino es Azure.
Preparar el grupo de Data broker
Prepare el grupo de Data broker para recuperar credenciales del almacén externo modificando el archivo de configuración local de cada agente de datos del grupo.
-
SSH a un agente de datos del grupo.
-
Edite el archivo local.json que reside en /opt/netapp/database roker/config.
-
Establezca enable en true y establezca los campos de parámetros config en external-integraciones.hashicorp de la siguiente forma:
- activado
-
-
Valores válidos: TRUE/FALSE
-
Tipo: Booleano
-
Valor predeterminado: FALSE
-
Verdadero: El agente de datos obtiene secretos de su propio almacén externo HashiCorp
-
False: El agente de datos almacena credenciales en su almacén local
-
- url
-
-
Tipo: Cadena
-
Valor: La URL de su almacén externo
-
- ruta
-
-
Tipo: Cadena
-
Valor: Prefijo de ruta al secreto con sus credenciales
-
- Rechazar no autorizado
-
-
Determina si desea que el agente de datos rechace los casos no autorizados almacén externo
-
Tipo: Booleano
-
Valor predeterminado: False
-
- método de autenticación
-
-
El método de autenticación que debe utilizar el agente de datos para acceder a las credenciales desde el almacén externo
-
Tipo: Cadena
-
Valores válidos: “aws-iam” / “role-app” / “gcp-iam”
-
- nombre-rol
-
-
Tipo: Cadena
-
Nombre de su puesto (en caso de que use aws-iam o gcp-iam)
-
- Secretilado y roótida
-
-
Tipo: Cadena (en caso de que utilice app-role)
-
- Espacio de nombres
-
-
Tipo: Cadena
-
Su espacio de nombres (encabezado X-Vault-Namespace si es necesario)
-
-
Repita estos pasos para cualquier otro corredores de datos del grupo.
Ejemplo de autenticación de rol aws
{
“external-integrations”: {
“hashicorp”: {
“enabled”: true,
“url”: “https://example.vault.com:8200”,
“path”: ““my-path/all-secrets”,
“reject-unauthorized”: false,
“auth-method”: “aws-role”,
“aws-role”: {
“role-name”: “my-role”
}
}
}
}
Ejemplo de autenticación gcp-iam
{
"external-integrations": {
"hashicorp": {
"enabled": true,
"url": http://ip-10-20-30-55.ec2.internal:8200,
"path": "v1/secret",
"namespace": "",
"reject-unauthorized": true,
"auth-method": "gcp-iam",
"aws-iam": {
"role-name": ""
},
"app-role": {
"root_id": "",
"secret_id": ""
},
"gcp-iam": {
"role-name": "my-iam-role"
}
}
}
}
Configure los permisos cuando utilice la autenticación gcp-iam
Si está utilizando el método de autenticación gcp-iam, el intermediario de datos debe tener el siguiente permiso de GCP:
- iam.serviceAccounts.signJwt
Crear una nueva relación de sincronización mediante secretos del almacén
Ahora que todo está configurado, puede enviar una llamada a la API para crear una relación de sincronización que utilice su almacén para obtener los secretos.
Publica la relación mediante la API de REST DE copia y sincronización de BlueXP.
Headers: Authorization: Bearer <user-token> Content-Type: application/json x-account-id: <accountid> x-netapp-external-request-id-src: request ID as part of path for source credentials x-netapp-external-request-id-trg: request ID as part of path for target credentials Body: post relationship v2 body
-
Para obtener un token de usuario y su ID de cuenta de BlueXP, "consulte esta página en la documentación".
-
Para crear un cuerpo para su relación de post, "Consulte la llamada a la API Relationships-v2".
Ejemplo
Ejemplo de la solicitud POST:
url: https://api.cloudsync.netapp.com/api/relationships-v2
headers:
"x-account-id": "CS-SasdW"
"x-netapp-external-request-id-src": "hb312vdasr2"
"Content-Type": "application/json"
"Authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik…"
Body:
{
"dataBrokerId": "5e6e111d578dtyuu1555sa60",
"source": {
"protocol": "s3",
"s3": {
"provider": "sgws",
"host": "1.1.1.1",
"port": "443",
"bucket": "my-source"
},
"target": {
"protocol": "s3",
"s3": {
"bucket": "my-target-bucket"
}
}
}