首页 > 安全保障 > 京东宙斯日志接入技术规范

京东宙斯日志接入技术规范

1、背景

        数据使用过程中,尤其是一些具体操作行为存在风险时,为让平台具备能够及时发现、分析和响应可能的数据泄露,需要ISV根据以下场景创建日志,并通过宙斯服务接口提交到统一平台。

        主要包括以下5项日志接口:

1)登陆日志

2)订单访问日志

3)向第三方应用传递订单日志

4)数据库操作日志

5)日志批量上传接口


2、调用方式

 

(1)请统一使用新服务地址进行调用日志API接口: https://api-log.jd.com/routerjson  ,不能使用网关默认的服务地址;

(2)SDK下载使用说明,点击查看

(3)SDK访问方式示例

jingdong.isv.uploadDBOperationLog接口上报数据库操作日志为例

private final static String LOG_SERVER_URL="https://api-log.jd.com/routerjson";

JdClient isvLogClient=new DefaultJdClient(LOG_SERVER_URL,accessToken,appKey,appSecret); //调用日志上报API的JdClient

IsvUploadBatchLogRequest request=new IsvUploadBatchLogRequest();

request.setJosAppKey("123123");

request.setData("[]");

request.setTimeStamp(1561453843000);

request.setType("login");

IsvUploadBatchLogResponse response=isvLogClient.execute(request);


重要提醒:关于日志上报的接口只能使用api-log.jd.com的域名禁止使用api.jd.com,如果配置错误,会导致日志上报失败,在使用SDK上报时需要单独new一个JdClient要和调用api的JdClient区分开。



3、API详细说明-登录日志

以下是日志接口详细说明,后继宙斯日志接口完成后,需要ISV将4种类型的日志按照接口要求进行上传。如有些接口贵司应用不涉及可不进行上传。


登录日志必须实时发送。
登录日志可以帮助我们分析帐号有关的风险。当用户有登录动作时,发送用户登录信息,不管成功或失败,都要发送。
API接口URL: 
jingdong.isv.uploadLoginLog  点击查看接口文档



7、API详细说明-日志批量上传接口

为提高日志传输效率,可以使用该接口批量上传以上4类日志。

API接口URL:   jingdong.isv.uploadBatchLog 点击查看接口文档
API接口参数说明

日志批量上传API接口参数列表

名称

类型

必须

描述

josAppKey

string
Y
宙斯开放平台颁发的app_key

method

string

Y

批量上传的日志记录名字:login, ordersendordersql

data

JSON

Y

日志记录JSON数组,单条记录请参考method参数值对应接口的API参数说明

timestamp

long
Y

整型时间戳,精确到毫秒,197001010点中以来的毫秒数,例如1482819560

data中包含的日志记录条数不要超过100,否则可能因为数据量过大,导致接口调用

失败,data字符串以method=order”为例:




8、验收要求

序号

关键验收项

要求

结果

1

各日志项user_ip是否是用户真实外网IP

确保是LB转换之前的IP,且为外网IP

 

2

按照JD要求在前端页面添加JS,生成设备ID。并将埋点页面URL上报给京东

测试在相同设备相同浏览器下,生成的device_id是相同的

 

3

确保各日志项包含了有效的device_id

正常情况下,日志项中device_id不能为空或无效内容

 

4

本地保存登录成功日志

按规范要求记录完整信息到本地,并至少保存半年

 

5

本地保存登录失败日志,并记录失败原因

按规范要求记录完整信息到本地,并至少保存半年

 

6

无自有账号情况,根据京东侧提供的信息尽可能多填写日志字段

按规范要求记录完整信息到本地,并至少保存半年

 

7

本地保存附录一涉及的订单操作日志

按规范要求记录完整信息到本地,并至少保存半年

 

8

本地保存向第三方传递订单操作日志

按规范要求记录完整信息到本地,并至少保存半年

 

9

本地保存由前端触发的订单/用户手机号数据库表的日志

按规范要求记录完整信息到本地,并至少保存半年

 

10

登录日志必须实时上传

实时上传(宙斯接口完成后提供)

 

11

登录之外日志按照规范要求的时间段内进行上传

符合规范的时间要求(宙斯接口完成后提供)

 






附录一、订单操作类型定义表

表附录一 订单操作类型定义表

序号

操作类型

说明

1

查询订单列表

批量操作订单

2

打印订单列表

3

导出订单列表

4

删除订单列表

5

查询订单(包括单独查看明文手机号操作)

单个订单操作

6

打印订单

7

导出订单

8

删除订单

9

修改订单


注意事项:

1)当operation=1operation=5,即查询订单的记录场景,包括但不限于以下场景/功能点需要记录日志:“用户在订单/售后列表点击查看订单的详情信息”、“用户在订单/售后列表页点击查看脱敏后的手机号信息”、“用户进入/售后列表页后,可以直接看到订单明细列表信息(手机号未脱敏)”等涉及查看订单敏感信息的场景。

2)当operation=37,即导出订单的操作,包括但不限于以下场景/功能点需要记录日志:“用户在订单管理页导出订单明细”、“用户在售后页面导出订单明细”、“用户导出包含手机号等敏感信息的订单/运单信息”等。

   判断功能是否需要记录日志点的本质:用户可通过此功能点,单条获取或批量获取到订单/运单/售后单中的敏感信息。



附录二 设备ID接入说明

 PC端接入

1 引入js文件

<script src=“//gias.jd.com/js/td.js”></script>

2pin获取

授权登录方式(https://open.jd.com/home/home#/doc/common?listId=880)的,取access_token返回值中的“open_id”作为下面代码中pin,无需再次MD5处理

如果是自有账号,把自有账号MD5处理后设置为pin

3 PC端获取eid,fp接口

在引入的script文件之后调用getJdEid方法,入参为一个回调函数,回调函数第一个参数为eid,第二个参数为指纹fp,第三个参数udfp为一个对象,包含日期和token

eid作为设备唯一标识device_id

示例代码:

<html>

    <head>

     </head>

     <body>

    </body>

</html>

            <script language="JavaScript">

                   var pin = //md5处理后的pin,这行代码必须有

            </script>

<script src="//gias.jd.com/js/td.js"></script>           

            <script language="JavaScript">

                        // 因为采集并上报一般需要在几百毫秒,延迟1秒执行

                        setTimeout(function () {
                                    try {
                                    getJdEid(function(eid,fp,udfp){
                                                //alert("eid="+eid+" fp="+fp+" token="+udfp.token);
                                    });
                                    }catch(e){
                                                //
异常处理
                                    }
                        }, 1000);

            </script>

注: 一定要放到</body></html>后面,不然会报错!