Protección de claves API almacenadas en parámetro

Un usuario Pregunto ✅

Jasonmull

Estoy usando PowerBI para extraer datos de una serie de API REST. En todos los casos, la autenticación se realiza mediante una clave API en el encabezado de la solicitud. Estoy logrando esto con éxito almacenando la clave en un parámetro y haciendo referencia al parámetro en mi consulta. Mi preocupación es la seguridad de este proceso. ¿Es el almacenamiento de parámetros el mejor método para el almacenamiento seguro de claves en este caso, y qué opciones tengo a mi disposición para proteger el contenido de esos parámetros tanto como sea posible?

Hola @jasonmull,

Como dijo lbendlin, puede adjuntar su clave API directamente a la solicitud API. (Creo que estas operaciones solo son adecuadas cuando se trabaja con una fuente de datos de prueba o se prueba en un entorno seguro)

Si trabaja con un entorno de producción o realiza estas operaciones en una red / dispositivos sin seguridad, pueden causar problemas de seguridad por la fuga de claves API.

Para este escenario, debería ser más adecuado mover estos pasos de verificación a los pasos de su consulta y solo generar los tokens cuando se procesen los pasos de su consulta. (para las solicitudes que power bi procesó, fueron encriptadas por power bi)

Informe técnico de seguridad de Power BI

Por ejemplo: se ha integrado credilents en los pasos de la consulta en lugar de utilizar las cadenas reales en las operaciones de envío / recepción.

 let
	rooturl = "https:/xxxx.xxxx.com/",
	authKey = "xxxxx",
	// Use the oauth2/token method to get token based on user credentials.
	GetJson = Web.Contents(rooturl,
		[
			Headers = [#"Authorization"=authKey, #"Content-Type"="application/json"],
			RelativePath="xxx/user/auth"
		]
	),
	//use token name to repalce 'tokne name' part to extract the responsed token
	token = Json.Document(GetJson)['token name'],
	//use generated token to get correspond results
	Source = Web.Contents(rooturl,
		 [
			 Headers = [#"token"=token, #"Content-Type"="application/json"],
			 RelativePath="xxxx/usage/xxxx" 
		 ]
	 ),
	Result=Json.Document(Source)
 in
	Result

Saludos,

Xiaoxin Sheng

Hola @jasonmull,

Como dijo lbendlin, puede adjuntar su clave API directamente a la solicitud API. (Creo que estas operaciones solo son adecuadas cuando se trabaja con una fuente de datos de prueba o se prueba en un entorno seguro)

Si trabaja con un entorno de producción o realiza estas operaciones en una red / dispositivos sin seguridad, pueden causar problemas de seguridad por la fuga de claves API.

Para este escenario, debería ser más adecuado mover estos pasos de verificación a los pasos de su consulta y solo generar los tokens cuando se procesen los pasos de su consulta. (para las solicitudes que power bi procesó, fueron encriptadas por power bi)

Informe técnico de seguridad de Power BI

Por ejemplo: se ha integrado credilents en los pasos de la consulta en lugar de utilizar las cadenas reales en las operaciones de envío / recepción.

 let
	rooturl = "https:/xxxx.xxxx.com/",
	authKey = "xxxxx",
	// Use the oauth2/token method to get token based on user credentials.
	GetJson = Web.Contents(rooturl,
		[
			Headers = [#"Authorization"=authKey, #"Content-Type"="application/json"],
			RelativePath="xxx/user/auth"
		]
	),
	//use token name to repalce 'tokne name' part to extract the responsed token
	token = Json.Document(GetJson)['token name'],
	//use generated token to get correspond results
	Source = Web.Contents(rooturl,
		 [
			 Headers = [#"token"=token, #"Content-Type"="application/json"],
			 RelativePath="xxxx/usage/xxxx" 
		 ]
	 ),
	Result=Json.Document(Source)
 in
	Result

Saludos,

Xiaoxin Sheng

lbendlin

Esa no es una buena idea. Un diseño un poco menos desastroso sería almacenar la clave en una fuente de datos externa, imponer restricciones severas de acceso a esa fuente de datos y luego llevar la fuente de datos a Power Query. De esa manera, solo el desarrollador del informe y la cuenta de conexión de la puerta de enlace deben tener acceso a esa fuente de datos. Es posible que aún deba agregar RLS para evitar fugas a través de Analizar en Excel u otras herramientas de punto final de XMLA.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *