[Fleet] Use internal ES client to access .fleet system indices (#119992) (#120006)

Co-authored-by: Nicolas Chaulet <nicolas.chaulet@elastic.co>
This commit is contained in:
Kibana Machine 2021-11-30 14:47:43 -05:00 committed by GitHub
parent bfb7bf9b2c
commit 8d172931ec
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 22 additions and 20 deletions

View file

@ -31,7 +31,7 @@ import * as AgentService from '../../services/agents';
export const getAgentHandler: RequestHandler<TypeOf<typeof GetOneAgentRequestSchema.params>> =
async (context, request, response) => {
const soClient = context.core.savedObjects.client;
const esClient = context.core.elasticsearch.client.asCurrentUser;
const esClient = context.core.elasticsearch.client.asInternalUser;
try {
const body: GetOneAgentResponse = {
@ -52,7 +52,7 @@ export const getAgentHandler: RequestHandler<TypeOf<typeof GetOneAgentRequestSch
export const deleteAgentHandler: RequestHandler<TypeOf<typeof DeleteAgentRequestSchema.params>> =
async (context, request, response) => {
const esClient = context.core.elasticsearch.client.asCurrentUser;
const esClient = context.core.elasticsearch.client.asInternalUser;
try {
await AgentService.deleteAgent(esClient, request.params.agentId);
@ -79,7 +79,7 @@ export const updateAgentHandler: RequestHandler<
undefined,
TypeOf<typeof UpdateAgentRequestSchema.body>
> = async (context, request, response) => {
const esClient = context.core.elasticsearch.client.asCurrentUser;
const esClient = context.core.elasticsearch.client.asInternalUser;
try {
await AgentService.updateAgent(esClient, request.params.agentId, {
@ -105,7 +105,7 @@ export const getAgentsHandler: RequestHandler<
undefined,
TypeOf<typeof GetAgentsRequestSchema.query>
> = async (context, request, response) => {
const esClient = context.core.elasticsearch.client.asCurrentUser;
const esClient = context.core.elasticsearch.client.asInternalUser;
try {
const { agents, total, page, perPage } = await AgentService.getAgentsByKuery(esClient, {
@ -200,7 +200,7 @@ export const getAgentStatusForAgentPolicyHandler: RequestHandler<
undefined,
TypeOf<typeof GetAgentStatusRequestSchema.query>
> = async (context, request, response) => {
const esClient = context.core.elasticsearch.client.asCurrentUser;
const esClient = context.core.elasticsearch.client.asInternalUser;
try {
// TODO change path

View file

@ -44,7 +44,7 @@ export const getAgentPoliciesHandler: RequestHandler<
TypeOf<typeof GetAgentPoliciesRequestSchema.query>
> = async (context, request, response) => {
const soClient = context.core.savedObjects.client;
const esClient = context.core.elasticsearch.client.asCurrentUser;
const esClient = context.core.elasticsearch.client.asInternalUser;
const { full: withPackagePolicies = false, ...restOfQuery } = request.query;
try {
const { items, total, page, perPage } = await agentPolicyService.list(soClient, {
@ -106,7 +106,7 @@ export const createAgentPolicyHandler: RequestHandler<
TypeOf<typeof CreateAgentPolicyRequestSchema.body>
> = async (context, request, response) => {
const soClient = context.core.savedObjects.client;
const esClient = context.core.elasticsearch.client.asCurrentUser;
const esClient = context.core.elasticsearch.client.asInternalUser;
const user = (await appContextService.getSecurity()?.authc.getCurrentUser(request)) || undefined;
const withSysMonitoring = request.query.sys_monitoring ?? false;
@ -161,7 +161,7 @@ export const updateAgentPolicyHandler: RequestHandler<
TypeOf<typeof UpdateAgentPolicyRequestSchema.body>
> = async (context, request, response) => {
const soClient = context.core.savedObjects.client;
const esClient = context.core.elasticsearch.client.asCurrentUser;
const esClient = context.core.elasticsearch.client.asInternalUser;
const user = await appContextService.getSecurity()?.authc.getCurrentUser(request);
try {
const agentPolicy = await agentPolicyService.update(
@ -188,7 +188,7 @@ export const copyAgentPolicyHandler: RequestHandler<
TypeOf<typeof CopyAgentPolicyRequestSchema.body>
> = async (context, request, response) => {
const soClient = context.core.savedObjects.client;
const esClient = context.core.elasticsearch.client.asCurrentUser;
const esClient = context.core.elasticsearch.client.asInternalUser;
const user = await appContextService.getSecurity()?.authc.getCurrentUser(request);
try {
const agentPolicy = await agentPolicyService.copy(
@ -216,7 +216,7 @@ export const deleteAgentPoliciesHandler: RequestHandler<
TypeOf<typeof DeleteAgentPolicyRequestSchema.body>
> = async (context, request, response) => {
const soClient = context.core.savedObjects.client;
const esClient = context.core.elasticsearch.client.asCurrentUser;
const esClient = context.core.elasticsearch.client.asInternalUser;
try {
const body: DeleteAgentPolicyResponse = await agentPolicyService.delete(
soClient,

View file

@ -46,6 +46,7 @@ export const getCheckPermissionsHandler: RequestHandler = async (context, reques
};
export const generateServiceTokenHandler: RequestHandler = async (context, request, response) => {
// Generate the fleet server service token as the current user as the internal user do not have the correct permissions
const esClient = context.core.elasticsearch.client.asCurrentUser;
try {
const { body: tokenResponse } = await esClient.transport.request<{

View file

@ -44,6 +44,7 @@ interface ESDataStreamStats {
}
export const getListHandler: RequestHandler = async (context, request, response) => {
// Query datastreams as the current user as the Kibana internal user may not have all the required permission
const esClient = context.core.elasticsearch.client.asCurrentUser;
const body: GetDataStreamsResponse = {

View file

@ -49,7 +49,7 @@ export const postEnrollmentApiKeyHandler: RequestHandler<
TypeOf<typeof PostEnrollmentAPIKeyRequestSchema.body>
> = async (context, request, response) => {
const soClient = context.core.savedObjects.client;
const esClient = context.core.elasticsearch.client.asCurrentUser;
const esClient = context.core.elasticsearch.client.asInternalUser;
try {
const apiKey = await APIKeyService.generateEnrollmentAPIKey(soClient, esClient, {
name: request.body.name,
@ -68,7 +68,7 @@ export const postEnrollmentApiKeyHandler: RequestHandler<
export const deleteEnrollmentApiKeyHandler: RequestHandler<
TypeOf<typeof DeleteEnrollmentAPIKeyRequestSchema.params>
> = async (context, request, response) => {
const esClient = context.core.elasticsearch.client.asCurrentUser;
const esClient = context.core.elasticsearch.client.asInternalUser;
try {
await APIKeyService.deleteEnrollmentApiKey(esClient, request.params.keyId);

View file

@ -85,7 +85,7 @@ export const createPackagePolicyHandler: RequestHandler<
TypeOf<typeof CreatePackagePolicyRequestSchema.body>
> = async (context, request, response) => {
const soClient = context.core.savedObjects.client;
const esClient = context.core.elasticsearch.client.asCurrentUser;
const esClient = context.core.elasticsearch.client.asInternalUser;
const user = appContextService.getSecurity()?.authc.getCurrentUser(request) || undefined;
const { force, ...newPolicy } = request.body;
try {
@ -122,7 +122,7 @@ export const updatePackagePolicyHandler: RequestHandler<
TypeOf<typeof UpdatePackagePolicyRequestSchema.body>
> = async (context, request, response) => {
const soClient = context.core.savedObjects.client;
const esClient = context.core.elasticsearch.client.asCurrentUser;
const esClient = context.core.elasticsearch.client.asInternalUser;
const user = appContextService.getSecurity()?.authc.getCurrentUser(request) || undefined;
const packagePolicy = await packagePolicyService.get(soClient, request.params.packagePolicyId);
@ -164,7 +164,7 @@ export const deletePackagePolicyHandler: RequestHandler<
TypeOf<typeof DeletePackagePoliciesRequestSchema.body>
> = async (context, request, response) => {
const soClient = context.core.savedObjects.client;
const esClient = context.core.elasticsearch.client.asCurrentUser;
const esClient = context.core.elasticsearch.client.asInternalUser;
const user = appContextService.getSecurity()?.authc.getCurrentUser(request) || undefined;
try {
const body: DeletePackagePoliciesResponse = await packagePolicyService.delete(
@ -199,7 +199,7 @@ export const upgradePackagePolicyHandler: RequestHandler<
TypeOf<typeof UpgradePackagePoliciesRequestSchema.body>
> = async (context, request, response) => {
const soClient = context.core.savedObjects.client;
const esClient = context.core.elasticsearch.client.asCurrentUser;
const esClient = context.core.elasticsearch.client.asInternalUser;
const user = appContextService.getSecurity()?.authc.getCurrentUser(request) || undefined;
try {
const body: UpgradePackagePolicyResponse = await packagePolicyService.upgrade(

View file

@ -21,7 +21,7 @@ export const updatePreconfigurationHandler: RequestHandler<
TypeOf<typeof PutPreconfigurationSchema.body>
> = async (context, request, response) => {
const soClient = context.core.savedObjects.client;
const esClient = context.core.elasticsearch.client.asCurrentUser;
const esClient = context.core.elasticsearch.client.asInternalUser;
const defaultOutput = await outputService.ensureDefaultOutput(soClient);
const { agentPolicies, packages } = request.body;

View file

@ -39,7 +39,7 @@ export const putSettingsHandler: RequestHandler<
TypeOf<typeof PutSettingsRequestSchema.body>
> = async (context, request, response) => {
const soClient = context.core.savedObjects.client;
const esClient = context.core.elasticsearch.client.asCurrentUser;
const esClient = context.core.elasticsearch.client.asInternalUser;
const user = await appContextService.getSecurity()?.authc.getCurrentUser(request);
try {

View file

@ -42,7 +42,7 @@ describe('setupFleet', () => {
soClient.find = mockedMethodThrowsError();
soClient.get = mockedMethodThrowsError();
soClient.update = mockedMethodThrowsError();
const esClient = context.core.elasticsearch.client.asCurrentUser;
const esClient = context.core.elasticsearch.client.asInternalUser;
const setupPromise = setupFleet(soClient, esClient);
await expect(setupPromise).rejects.toThrow('SO method mocked to throw');
@ -55,7 +55,7 @@ describe('setupFleet', () => {
soClient.find = mockedMethodThrowsCustom();
soClient.get = mockedMethodThrowsCustom();
soClient.update = mockedMethodThrowsCustom();
const esClient = context.core.elasticsearch.client.asCurrentUser;
const esClient = context.core.elasticsearch.client.asInternalUser;
const setupPromise = setupFleet(soClient, esClient);
await expect(setupPromise).rejects.toThrow('method mocked to throw');