版本: 8.4-8.9
简要来说,当 Elasticsearch 用户尝试使用没有必要权限的凭证执行"run-as"命令时,会发生此错误。“run-as"功能允许一个用户以另一个用户的身份执行命令。要解决此问题,您可以提供具有"run-as"权限的正确凭证,或者修改现有用户的权限以包含"run-as”。另外,如果不需要"run-as"功能,也可以禁用它。在分配权限时,务必确保遵循最小权限原则,以避免潜在的安全风险。
日志上下文 #
日志"the provided grant credentials do not support run-as"的类名是 TransportGrantAction.java。 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入了解上下文的人参考:
if (authentication.isRunAs()) {
final String effectiveUsername = authentication.getEffectiveSubject().getUser().principal();
if (runAsUsername != null && false == runAsUsername.equals(effectiveUsername)) {
// runAs is ignored
listener.onFailure(
new ElasticsearchStatusException("the provided grant credentials do not support run-as"; RestStatus.BAD_REQUEST)
);
} else {
// Authentication can be run-as even when runAsUsername is null.
// This can happen when the authentication itself is a run-as client-credentials token.
assert runAsUsername != null || "access_token".equals(request.getGrant().getType());





