当 ShowPii 设置为 true 时,IdentityModel 会记录哪些信息?
What information is logged by IdentityModel when ShowPii is set to true?
IdentityModelEventSource
有一个名为 ShowPII
的 属性,这意味着个人身份信息将被添加到日志中(与安全性相关)。该值用于决定何时记录一些 OAuth2 敏感数据。
我想了解将记录哪种个人身份信息:
- 客户编号? (又名客户端密钥、消费者密钥)
- 客户机密? (又名消费者秘密)
- Json 网络令牌? (又名智威汤逊)
- 访问令牌?
- 刷新令牌?
- Kerberos 票证?
- PKCE 值?
- 授权码?
我知道它无法访问用户名和密码,因为它们只与 IDP 直接交换。
但是我需要知道是否需要找到一种方法来锁定我的日志文件,因为它会包含构成安全漏洞的数据。
查看 the source,似乎当 ShowPII
开启时 - 它会做两件事:
- Replace all parameters 传递给特定于库的异常及其数据类型名称
- 对于所有系统异常-replace inner message异常类型名称
在此上下文中,“特定于库”是一个例外 is of type Exception
and its full type name starts with "Microsoft.IdentityModel."(库定义了一些)
根据您的用例,您会看到可以使用自定义异常记录的各种参数。 A quick search for FormatInvariant 产生了很多供您考虑。
同样,根据您的使用方式,您可能会通过查看特定命名空间上的相关 LogMessages.cs
文件来更好地了解错误消息的内容。
P.S.: 在旁注中,似乎默认 ShowPII
设置 is GDPR-compliant
这是 IdentityModel 的可能日志消息:LogMessages.cs
关于
I am trying to understand what kind of Personally Identifiable Information will be logged
我不会从那里复制粘贴日志消息(特别是,因为它们随时可能更改)。您可以自己检查它们并决定什么应该被视为 PII。
但这里有一个有趣的例子:
"IDX10615: Encryption failed. No support for: Algorithm: '{0}', SecurityKey: '{1}'."
和this的用法是:
throw LogHelper.LogExceptionMessage(new SecurityTokenEncryptionFailedException(LogHelper.FormatInvariant(TokenLogMessages.IDX10615, encryptingCredentials.Enc, encryptingCredentials.Key)));
如果您继续跟踪,您会发现如果 ShowPII = true
则 encryptingCredentials.Key
将被记录,而如果 ShowPII = false
.
则不会被记录
当然,根据您的用例,此特定消息可能永远不会出现在您的日志中。并不是所有的信息都泄露得如此离谱。但你永远不知道:
- 您的用例可能会改变
- 您可能误解了 IdentityModel 可以为您的用例发出的消息集
- IdentityModel 代码可能会更改,您可能会忘记检查消息集是否仍然安全
大约
if I need to find a way to lock down my log files
是的,你绝对需要。
或者更好 - 不要在生产环境中使用 ShowPII = true
进行监控,仅在开发环境中使用它进行调试。
IdentityModelEventSource
有一个名为 ShowPII
的 属性,这意味着个人身份信息将被添加到日志中(与安全性相关)。该值用于决定何时记录一些 OAuth2 敏感数据。
我想了解将记录哪种个人身份信息:
- 客户编号? (又名客户端密钥、消费者密钥)
- 客户机密? (又名消费者秘密)
- Json 网络令牌? (又名智威汤逊)
- 访问令牌?
- 刷新令牌?
- Kerberos 票证?
- PKCE 值?
- 授权码?
我知道它无法访问用户名和密码,因为它们只与 IDP 直接交换。
但是我需要知道是否需要找到一种方法来锁定我的日志文件,因为它会包含构成安全漏洞的数据。
查看 the source,似乎当 ShowPII
开启时 - 它会做两件事:
- Replace all parameters 传递给特定于库的异常及其数据类型名称
- 对于所有系统异常-replace inner message异常类型名称
在此上下文中,“特定于库”是一个例外 is of type Exception
and its full type name starts with "Microsoft.IdentityModel."(库定义了一些)
根据您的用例,您会看到可以使用自定义异常记录的各种参数。 A quick search for FormatInvariant 产生了很多供您考虑。
同样,根据您的使用方式,您可能会通过查看特定命名空间上的相关 LogMessages.cs
文件来更好地了解错误消息的内容。
P.S.: 在旁注中,似乎默认 ShowPII
设置 is GDPR-compliant
这是 IdentityModel 的可能日志消息:LogMessages.cs
关于
I am trying to understand what kind of Personally Identifiable Information will be logged
我不会从那里复制粘贴日志消息(特别是,因为它们随时可能更改)。您可以自己检查它们并决定什么应该被视为 PII。
但这里有一个有趣的例子:
"IDX10615: Encryption failed. No support for: Algorithm: '{0}', SecurityKey: '{1}'."
和this的用法是:
throw LogHelper.LogExceptionMessage(new SecurityTokenEncryptionFailedException(LogHelper.FormatInvariant(TokenLogMessages.IDX10615, encryptingCredentials.Enc, encryptingCredentials.Key)));
如果您继续跟踪,您会发现如果 ShowPII = true
则 encryptingCredentials.Key
将被记录,而如果 ShowPII = false
.
当然,根据您的用例,此特定消息可能永远不会出现在您的日志中。并不是所有的信息都泄露得如此离谱。但你永远不知道:
- 您的用例可能会改变
- 您可能误解了 IdentityModel 可以为您的用例发出的消息集
- IdentityModel 代码可能会更改,您可能会忘记检查消息集是否仍然安全
大约
if I need to find a way to lock down my log files
是的,你绝对需要。
或者更好 - 不要在生产环境中使用 ShowPII = true
进行监控,仅在开发环境中使用它进行调试。