审核记录器在SAP Cloud Foundry上的用法

2020-09-05 01:12发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


尊敬的专家,

我正在遵循教程 https://blogs.sap.com/2017/09/19/logging-on-sap-s4hana-cloud-sdk /来研究如何在Cloud Foundry上使用Audit Logger捕获机密数据。

我现在遇到的问题是我无法按照上述教程中提到的步骤生成审核日志。 而且我确实认为,由于以下原因,SAP Cloud Foundry上Audit Logger的使用有所更改:

1。 SAP Cloud Foundry中没有审核日志服务(仅审核管理服务)可供使用。 但是我找到了使用 XS Advanced Development 使用审核日志服务的指南。 我现在很困惑。

https://help .sap.com/viewer/4505d0bdaf4948449b7f7379d24d0f0d/2.0.03/zh-CN/5fbc4eaf820142f5b0782ea37a5020bc.html

2。 我完成了这些步骤,并在没有审核日志服务绑定的情况下在SAP Cloud Foundry中部署了我的应用程序。 但是发生了一个问题。 似乎我需要先安装XS_JAVA。 不幸的是,我对此知之甚少。

 com.google.common.util.concurrent.UncheckedExecutionException:com.sap.cloud.sdk.cloudplatform.exception.DependencyNotFoundException:
 无法实例化ScpCfAuditLog。 请确保将以下依赖项的最新版本添加到您的项目中:
 'com.sap.xs.auditlog:audit-java-client-api','com.sap.xs.auditlog:audit-java-client-impl','com.sap.xs.java:xs-env'。
 请注意,这些依赖关系可能在Maven Central中不可用。
 在这种情况下,请安装最新版本的" XS Advanced的标准Java客户端库"。
 访问" https://support.sap.com/"并搜索名称为" XS_JAVA"的软件下载。

期待您的澄清。

谢谢

杰里

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


尊敬的专家,

我正在遵循教程 https://blogs.sap.com/2017/09/19/logging-on-sap-s4hana-cloud-sdk /来研究如何在Cloud Foundry上使用Audit Logger捕获机密数据。

我现在遇到的问题是我无法按照上述教程中提到的步骤生成审核日志。 而且我确实认为,由于以下原因,SAP Cloud Foundry上Audit Logger的使用有所更改:

1。 SAP Cloud Foundry中没有审核日志服务(仅审核管理服务)可供使用。 但是我找到了使用 XS Advanced Development 使用审核日志服务的指南。 我现在很困惑。

https://help .sap.com/viewer/4505d0bdaf4948449b7f7379d24d0f0d/2.0.03/zh-CN/5fbc4eaf820142f5b0782ea37a5020bc.html

2。 我完成了这些步骤,并在没有审核日志服务绑定的情况下在SAP Cloud Foundry中部署了我的应用程序。 但是发生了一个问题。 似乎我需要先安装XS_JAVA。 不幸的是,我对此知之甚少。

 com.google.common.util.concurrent.UncheckedExecutionException:com.sap.cloud.sdk.cloudplatform.exception.DependencyNotFoundException:
 无法实例化ScpCfAuditLog。 请确保将以下依赖项的最新版本添加到您的项目中:
 'com.sap.xs.auditlog:audit-java-client-api','com.sap.xs.auditlog:audit-java-client-impl','com.sap.xs.java:xs-env'。
 请注意,这些依赖关系可能在Maven Central中不可用。
 在这种情况下,请安装最新版本的" XS Advanced的标准Java客户端库"。
 访问" https://support.sap.com/"并搜索名称为" XS_JAVA"的软件下载。

期待您的澄清。

谢谢

杰里

付费偷看设置
发送
9条回答
追夢秋陽
1楼 · 2020-09-05 02:06.采纳回答

经过进一步调查,我发现写审计日志所需的服务(称为auditlog,auditlog-management有所不同)没有公开可用。

此外,我发现sap_java_buildpack不再具有内置的必需库,因此需要手动导入它们。 通常,我建议编辑pom.xml以包括DependencyNotFoundException消息中建议的模块,但是这些模块在Maven Central上也不可用。

如果您想尝试SAP Cloud SDK提供的Audit logger API,那么我目前只能提供的建议是使用DefaultLoggerAuditLog。 请注意,这只是写入应用程序日志,因此它不执行任何实际的审核日志记录(换句话说,不适合生产)。 尽管您可以实例化该类并直接使用它,但我建议将AuditLogger的外观设置为返回DefaultLoggerAuditLog实例的外观。 稍后,您可以切换基础实现(外观)而无需修改应用程序代码。

例如:

 AuditLogger.setAuditLogFacade(new AuditLogFacade(){
     @Nonnull
     @Override
     公共类<? 扩展AuditLog> getAuditLogClass(){
         返回DefaultLoggerAuditLog.class;
     }
     @Nonnull
     @Override
     公共AuditLog getAuditLog()引发AuditLogAccessException {
         返回新的DefaultLoggerAuditLog();
     }
 }); 
shere_lin
2楼-- · 2020-09-05 01:52

非常感谢。

这就是我想要的。 现在一切都清楚了。 只有一个问题是可以从哪里获得以上信息?

clever101
3楼-- · 2020-09-05 02:01

您关于安装XS_JAVA的具体问题是什么?

callcenter油条
4楼-- · 2020-09-05 01:45

我还没有开始安装XS_JAVA。

我要确认的第一件事是必须安装XS_JAVA才能利用Audit logger? 如果是,我的建议是更新该教程,以防有人误解。

打个大熊猫
5楼-- · 2020-09-05 01:53

更多内容。

基于以下描述,如果我将应用程序推送到SCP Cloud Foundry,则应使用Cloud Foundry库。 但是为什么还说找不到依赖项呢? 换句话说,在Cloud Foundry环境中使用审核日志还应该怎么做?

xfwsx85
6楼-- · 2020-09-05 02:04

感谢您的回复。

我已经照你说的做了。 这是manifest.yml文件。

-
 应用范围:
 -名称:MasterDataManagement
   记忆体:1024M
   超时:300
   随机路由:正确
   路径:application/target/MasterDataManagement-application.jar
   构建包:
     -sap_java_buildpack
   环境:
     TARGET_RUNTIME:主要
     SPRING_PROFILES_ACTIVE:"云"
     JBP_CONFIG_SAPJVM_MEMORY_SIZES:'元空间:128m ..'
   服务:
     -我的应用程序日志
     -my-xsuaa
     -我的目的地
     -我的连接
     -my-auditlog 

在我的代码中调用审核日志API。 API的用法已更改。 我认为以下代码可能不正确。

 @Override
     受保护的BusinessPartner runCacheable()引发异常{
        
        //1.创建AccessedAttribute对象,以更深入地了解属性的操作尝试
         AccessedAttribute tryAttributes = new AccessedAttribute(
                 " BusinessPartner.CreationDate",
                 AccessedAttribute.Operation.READ
         );
         AuditedDataObject auditedDataObject =新的AuditedDataObject(" Object");
         AuditedDataSubject auditedDataSubject =新的AuditedDataSubject(" person"," ADMIN");
        
        //2.记录AccessedAttribute对象
//AuditLogger.logDataReadAttempt(
//bPartnerId,
//               空值,
//Collections.singleton(attemptAttributes),
//"尝试选择SELECT业务伙伴"
//);
         AuditLogger.logDataReadAttempt(auditedDataObject,auditedDataSubject,tryAttributes,tryAttributes);
        //新的DefaultLoggerAuditLog()。logDataReadAttempt(null,auditedDataObject,auditedDataSubject,tryAttributes,tryAttributes);
        
          最终BusinessPartner bp =
                     新的DefaultBusinessPartnerService()
                             .getBusinessPartnerByKey(bPartnerId)
//.select(BusinessPartner.BUSINESS_PARTNER,
//BusinessPartner.LAST_NAME,
//BusinessPartner.FIRST_NAME,
//BusinessPartner.IS_MALE,
//BusinessPartner.IS_FEMALE,
//BusinessPartner.CREATION_DATE)
                            //。filter(BusinessPartner.BUSINESS_PARTNER_CATEGORY.eq(类别))
                            //.orderBy(BusinessPartner.LAST_NAME,Order.ASC)
                             。执行();
          logger.info("返回的业务伙伴为" + bp);
          返回bp;
     } 

"未找到依赖项"错误的根本原因是在获取ScpAuditLog实例之前,它会验证运行时依赖项。 不幸的是,没有。

以下是源代码。

 @Override
     公共无效assertRuntimeDependenciesExist()
         抛出DependencyNotFoundException
     {
         尝试{
             Class.forName(" com.sap.xs.audit.client.impl.v2.AuditLogMessageFactoryImpl");
         }
         catch(final ClassNotFoundException e){
             抛出新的DependencyNotFoundException(
                 "无法实例化"
                     + ScpCfAuditLog.class.getSimpleName()
                     +"。请确保将以下依赖项的最新版本添加到您的项目中:"
                     +"'com.sap.xs.auditlog:audit-java-client-api',"
                     +"'com.sap.xs.auditlog:audit-java-client-impl',"
                     +"'com.sap.xs.java:xs-env'。
                     +"请注意,这些依赖关系可能在Maven Central中不可用。"
                     +"在这种情况下,请安装最新版本的"
                     +"'XS Advanced的标准Java客户端库'。"
                     +"访问'https://support.sap.com/'和"
                     +"搜索名称为'XS_JAVA'的软件下载。",
                 e);
         }
     }

   /**
      * {@inheritDoc}
      */
     @Nonnull
     @Override
     公共AuditLog getAuditLog()
         引发AuditLogAccessException
     {
         assertRuntimeDependenciesExist();
         返回新的ScpCfAuditLog();
     } 
hengyuye
7楼-- · 2020-09-05 02:01

在应用程序的manifest.yml中,您正在使用哪个buildpack? 要使用SAP Cloud SDK提供的审核日志记录抽象,只需将buildpack设置为 sap_java_buildpack 即可获取所需的库。 另外,请确保您的应用程序的 pom.xml 具有以下依赖性:

 
          com.sap.cloud.s4hana.cloudplatform 
          scp-cf 
 
 <依赖性>
      com.sap.cloud.s4hana 
      s4hana-all 
  

一周热门 更多>