
Habiendo cubierto los fundamentos teóricos en el blog anterior de esta serie, examinemos la implementación de la aplicación basada en CAP y los pasos para integrar los servicios de DPP.
Usaremos una aplicación de muestra ‘Game Shop’ que se usa para ordenar uno o más Juegos para un cliente. La aplicación de muestra se ve como se muestra a continuación. Puede encontrar el código de la aplicación de muestra para este blog aquí.
En Game Shop Sample, el sandbox launchpad se utiliza para proporcionar un punto de entrada tanto para la aplicación Cliente, que se utiliza para gestionar/modificar clientes, como para la aplicación Pedido, que se utiliza para gestionar/modificar pedidos de un cliente.
CAP simplifica el cumplimiento de las normas de privacidad de datos para las aplicaciones mediante la automatización de tareas repetitivas mediante modelos anotados. Lo ayuda a cumplir con los requisitos específicos de privacidad de datos a través de diferentes servicios SAP BTP como Personal Data Manager mediante el uso de anotaciones y configuraciones.
Para usar el Servicio de administrador de datos personales (PDM) en BTP, debemos proporcionar un servicio basado en OData o Rest que sirva datos personales almacenados en nuestra aplicación. Además, PDM requiere ciertas anotaciones para interpretar el servicio para extraer y presentar datos personales en ui. Las anotaciones requeridas para PDM pueden ser parte del documento de metadatos del servicio o también pueden proporcionarse con un punto final separado. Puede encontrar más información sobre las anotaciones requeridas para PDM en las siguientes páginas: Anotaciones de OData V2, Anotaciones de OData V4
en la PAC, ‘@Información personal’ las anotaciones se utilizan para sugerir entidades o elementos/campos en su modelo de dominio que tendrán datos personales.
Ahora, agreguemos un servicio OData a la aplicación de muestra que proporcionará los datos personales de los sujetos de datos (individuos) utilizados en la aplicación y agregará las anotaciones de nivel de entidad/clave/campo requeridas para PDM.
using {sap.cap.dpp as db} from '../db/schema';
service PdmService {
entity Customers as projection on db.Customers;
entity CustomerPostalAddresses as
select from db.Addresses {
*,
type.name as addressType };
entity CustomerEmailAddresses as
select from db.EmailAddresses {
*,
emailType.name as emailAddressType };
entity OrderItemView as
select from db.Orders {
key items.ID as Item_ID,
ID as Order_ID,
orderNo as Order_No,
customer.ID as Customer_ID,
customer.email as Customer_Email,
items.game.title as Item_Game,
items.quantity as Item_Quantity,
items.netprice as Item_NetPrice };
}
Como se muestra arriba, el servicio OData ‘DppService’ proporciona cuatro entidades, es decir, Clientes, Dirección postal, Dirección de correo electrónico y OrderItemView. OrderItemView se utiliza para proporcionar información transaccional sobre los Sujetos de datos (Individuos)
Anotaciones
annotate service.Customers with @PersonalData: {
DataSubjectRole: 'Customer',
EntitySemantics: 'DataSubject'
};
annotate service.CustomerPostalAddresses with @PersonalData: {
DataSubjectRole: 'Customer',
EntitySemantics: 'DataSubjectDetails'
};
annotate service.CustomerEmailAddresses with @PersonalData: {
DataSubjectRole: 'Customer',
EntitySemantics: 'DataSubjectDetails'
};
annotate service.OrderItemView with @PersonalData: {
EntitySemantics: 'Other'
};
Las entidades se pueden anotar con información semántica que, a su vez, informa a PDM sobre el tipo de datos personales que proporcionan estas entidades, como se muestra arriba.
@Información personal.EntitySemantics: ‘Sujeto de datos‘ – Las entidades marcadas con esta anotación describen a un Sujeto de datos, es decir, una persona física identificable.
@Información personal.EntitySemantics: ‘DatosAsuntoDetalles‘ – Las entidades marcadas con esta anotación contienen detalles de un sujeto de datos, pero por sí mismas no identifican/describen a un sujeto de datos.
@Información personal.EntitySemantics: ‘Otro‘ – Las entidades marcadas con esta anotación contienen referencias a interesados, pero no representan a interesados ni detalles de interesados por sí mismos.
@Información personal.DataSubjectRole: ‘Cliente‘ – Esta anotación se utiliza para definir la función de los interesados. Por ejemplo, una persona puede ser un cliente, un proveedor, un socio o un empleado, o todo al mismo tiempo. Según el rol, los datos personales de un individuo pueden ser diferentes.
annotate service.Customers with {
ID @PersonalData.FieldSemantics: 'DataSubjectID';
email @PersonalData.IsPotentiallyPersonal @Communication.IsEmailAddress;
firstName @PersonalData.IsPotentiallyPersonal;
lastName @PersonalData.IsPotentiallyPersonal;
creditCardNo @PersonalData.IsPotentiallySensitive;
dateOfBirth @PersonalData.IsPotentiallyPersonal;
}
annotate service.CustomerPostalAddresses with {
customer @PersonalData.FieldSemantics: 'DataSubjectID';
addressType @PersonalData.IsPotentiallyPersonal;
country @PersonalData.IsPotentiallyPersonal;
state @PersonalData.IsPotentiallyPersonal;
town @PersonalData.IsPotentiallyPersonal;
street @PersonalData.IsPotentiallyPersonal;
someOtherField @PersonalData.IsPotentiallyPersonal;
}
annotate service.CustomerEmailAddresses with {
customer @PersonalData.FieldSemantics: 'DataSubjectID';
emailAddressType @PersonalData.IsPotentiallyPersonal;
emailAddress @PersonalData.IsPotentiallyPersonal;
};
annotate service.OrderItemView with {
Item_ID @PersonalData.FieldSemantics: 'ContractRelatedID';
Customer_ID @PersonalData.FieldSemantics: 'DataSubjectID';
personalComment @PersonalData.IsPotentiallyPersonal;
}
@Información personal.Semántica de campo: ‘ID del sujeto de datos‘ – Esta anotación se utiliza para especificar la clave del Titular de los datos y se puede utilizar para relacionar la información y los documentos personales correspondientes.
@Información personal.EsPotencialmentePersonal / @Información personal.EsPotencialmenteSensible : Estas 2 anotaciones se utilizan para administrar las acciones relacionadas con la privacidad de datos en un nivel granular fino.
En el contexto del registro de auditoría, la anotación @PersonalData.IsPotentiallyPersonal genera registros de auditoría para insertar, actualizar y eliminar datos personales, mientras que la anotación @PersonalData.IsPotentiallySensitive agrega registros de auditoría para todas y cada una de las lecturas de datos personales.
annotate service.Customers with @Communication: {Contact: {
$Type: 'Communication.ContactType',
n : { surname: lastName,
given : firstName },
bday : dateOfBirth,
email: [{ type : #preferred,
address: email }]
}};
Para realizar una búsqueda válida de interesados en la aplicación SAP Personal Data Manager, se requiere una de las siguientes combinaciones de información.
- Apellido, nombre y cumpleaños
- Apellido, Apellido y Email
- la identificación del sujeto de datos
Por lo tanto, para identificar los campos de búsqueda obligatorios del interesado, los campos deben anotarse con la anotación correspondiente @Comunicación.Contacto como se muestra arriba. Se puede encontrar más información sobre esta anotación en Vocabulario de comunicación.
Seguridad
‘DppService’ debe protegerse para la restricción de datos personales confidenciales mediante la anotación @requires.
using {DppService as service} from './dpp-service';
annotate service with @(
path : '/pdm',
requires: 'PersonalDataManagerUser'
);
El servicio PDM llamará a la aplicación CAP para leer los datos personales, lo que significa que se debe asignar al PDM el rol ‘PersonalDataManagerUser’. La llamada entre el servicio PDM y la aplicación CAP utiliza comunicación técnica. Al igual que un acuerdo de confianza, la aplicación CAP debe otorgar la autoridad al servicio PDM para usar el alcance ‘PersonalDataManagerUser’ y el servicio PDM debe aceptar dicha declaración de autoridad.
La siguiente información debe agregarse a xs-security.json en la aplicación CAP para iniciar el acuerdo de confianza.
{
"scopes": [
.....
{
"name": "$XSAPPNAME.PersonalDataManagerUser",
"description": "Authority for Personal Data Manager",
"grant-as-authority-to-apps": [
"$XSSERVICENAME(cap-dpp-example-pdm)"
]
}
],
"attributes": [],
"role-templates": [
.....
{
"name": "PersonalDataManagerUser",
"description": "generated",
"scope-references": [
"$XSAPPNAME.PersonalDataManagerUser"
],
"attribute-references": []
}
]
}
La línea «conceder-como-autoridad-a-las-aplicaciones»: [“$XSSERVICENAME(cap-dpp-example-pdm)”] indica xsuaa para otorgar el alcance de PersonalDataManagerUser a un servicio con el nombre ‘cap-dpp-example-prm’.
Significa que necesitamos crear el servicio PDM de instancia con el nombre exacto de ‘cap-dpp-example-prm’
Ahora nuestra aplicación CAP está lista para implementarse en BTP y luego el servicio PDM se puede vincular para administrar las solicitudes de privacidad de datos.
Antes de continuar con otros pasos, asegúrese de tener derechos de PDM en su subcuenta donde se implementará la aplicación CAP.
Servicio | Plan |
Administrador de datos personales | estándar (aplicación) |
Administrador de datos personales | estándar |
Creación de instancias de servicio de PDM
Usando BTP Cockpit, cree una instancia de servicio PDM con el nombre ‘cap-dpp-ejemplo-pdm‘ que se proporciona en xs-security.json de la aplicación CAP como se muestra a continuación:
También requiere las siguientes configuraciones de seguridad. También puede encontrar las configuraciones de seguridad desde aquí. La sección xs-security se proporciona con «autoridades»: [ “$ACCEPT_GRANTED_AUTHORITIES” ] para que la instancia de PDM acepte el alcance ‘PersonalDataManagerUser’ proporcionado por la aplicación CAP. Tenga en cuenta que xsappname debe ser el mismo que se define en xs-security.json de la aplicación CAP.
Puede encontrar la configuración anterior aquí [ pdm-security-config.json ].
Implementar aplicación CAP
La base completa del código de la aplicación CAP está disponible aquí [ cap-dpp-example ]. Puede clonar la base de código completa, construir e implementar usando los siguientes comandos. Asegúrese de haber iniciado sesión en Cloud Foundry con el comando cf login antes de usar los comandos anteriores.
instalar npm
compilación de ejecución de npm
npm ejecutar implementar
Después de la implementación, asigne los roles ‘GameShop-Admin’ y ‘GameShop-User’ al usuario para acceder a la aplicación de muestra (aprobador). Pocos clientes están precargados como parte de la aplicación de muestra.
Cree un pedido para un cliente utilizando el mosaico «Gestionar pedidos» como se muestra a continuación:
Enlazar la instancia de servicio de PDM con la aplicación CAP
Abra la instancia de PDM (cap-dpp-example-pdm) en BTP Cockpit y cree un enlace debajo de la sección de aplicación enlazada.
Luego elija su servicio de aplicación CAP (cap-dpp-example-srv) y cree los siguientes parámetros de enlace desde aquí [ pdm-config.json ].
Suscríbase a la aplicación PDM
Vaya a BTP Cockpit y suscríbase a la aplicación Administrador de datos personales.
Una vez suscrito, PDM proporciona los siguientes roles:
Puede asignar roles según sus requisitos. A los efectos de esta serie de blogs, asignaremos todas las funciones a un solo usuario y exploraremos las funciones de PDM. Para obtener más información acerca de cómo crear roles y cómo agruparlos en colecciones de roles mediante el cockpit de SAP BTP, consulte Creación de roles y colecciones de roles para aplicaciones. y Puede encontrar más información sobre estos roles aquí [ Identification and Access Management ].
En esta publicación de blog, exploramos cómo CAP admite diferentes conjuntos de anotaciones que se requieren para integrar el servicio PDM. Además, implementamos la aplicación CAP y la integramos con el servicio PDM.
En la próxima publicación de blog de esta serie, exploraremos más sobre cómo podemos usar la aplicación de interfaz de usuario de PDM para administrar las solicitudes de privacidad de datos.
Se puede encontrar más información sobre el modelo de programación de aplicaciones en la nube aquí. Puede seguir mi perfil para recibir notificaciones de la próxima publicación de blog sobre CAP. Siéntase libre de proporcionar cualquier comentario que tenga en la sección de comentarios a continuación y haga sus preguntas sobre el tema en la comunidad de sap usando este enlace. |
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073