From 297d73a7dffd7a5f36d84f843ab6ba3406da2e64 Mon Sep 17 00:00:00 2001 From: Josh Michielsen Date: Tue, 12 Mar 2024 12:36:11 +0000 Subject: [PATCH] InfluxDB: Add configuration option for enabling insecure gRPC connections (#83834) * InfluxDB: add configuration option for enabling insecure gRPC connections * fix: add insecureGrpc to InfluxOptions * rename options label 'gRPC' -> 'Connection' Co-authored-by: ismail simsek * update docs: rename options label 'gRPC' -> 'Connection' Co-authored-by: ismail simsek * default insecure connection boolean to false in frontend Co-authored-by: ismail simsek * run prettier:write --------- Co-authored-by: ismail simsek --- docs/sources/datasources/influxdb/_index.md | 9 ++++---- pkg/tsdb/influxdb/fsql/fsql.go | 2 +- pkg/tsdb/influxdb/fsql/fsql_test.go | 14 ++++++------- pkg/tsdb/influxdb/influxdb.go | 2 +- pkg/tsdb/influxdb/models/datasource_info.go | 2 +- .../editor/config/InfluxSQLConfig.tsx | 21 ++++++++++++++++++- .../app/plugins/datasource/influxdb/types.ts | 1 + 7 files changed, 36 insertions(+), 15 deletions(-) diff --git a/docs/sources/datasources/influxdb/_index.md b/docs/sources/datasources/influxdb/_index.md index ca4ed0281115..295cf0cb6e15 100644 --- a/docs/sources/datasources/influxdb/_index.md +++ b/docs/sources/datasources/influxdb/_index.md @@ -126,10 +126,11 @@ Configure these options if you select the InfluxQL (classic InfluxDB) query lang Configure these options if you select the SQL query language: -| Name | Description | -| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Database** | Sets the ID of the bucket to query. Copy this from the Buckets page of the InfluxDB UI. | -| **Token** | API token used for SQL queries. It can be generated on InfluxDB Cloud dashboard under [Load Data > API Tokens](https://docs.influxdata.com/influxdb/cloud-serverless/get-started/setup/#create-an-all-access-api-token) menu. | +| Name | Description | +| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **Database** | Sets the ID of the bucket to query. Copy this from the Buckets page of the InfluxDB UI. | +| **Token** | API token used for SQL queries. It can be generated on InfluxDB Cloud dashboard under [Load Data > API Tokens](https://docs.influxdata.com/influxdb/cloud-serverless/get-started/setup/#create-an-all-access-api-token) menu. | +| **Insecure Connection** | Disable gRPC TLS security. | ### Configure Flux diff --git a/pkg/tsdb/influxdb/fsql/fsql.go b/pkg/tsdb/influxdb/fsql/fsql.go index 99e4b55628d7..52ed6614d04e 100644 --- a/pkg/tsdb/influxdb/fsql/fsql.go +++ b/pkg/tsdb/influxdb/fsql/fsql.go @@ -105,7 +105,7 @@ func runnerFromDataSource(dsInfo *models.DatasourceInfo) (*runner, error) { md.Set("Authorization", fmt.Sprintf("Bearer %s", dsInfo.Token)) } - fsqlClient, err := newFlightSQLClient(addr, md, dsInfo.SecureGrpc) + fsqlClient, err := newFlightSQLClient(addr, md, !dsInfo.InsecureGrpc) if err != nil { return nil, err } diff --git a/pkg/tsdb/influxdb/fsql/fsql_test.go b/pkg/tsdb/influxdb/fsql/fsql_test.go index 523a83dcbb46..b2eb94f5b0d0 100644 --- a/pkg/tsdb/influxdb/fsql/fsql_test.go +++ b/pkg/tsdb/influxdb/fsql/fsql_test.go @@ -57,13 +57,13 @@ func (suite *FSQLTestSuite) TestIntegration_QueryData() { resp, err := Query( context.Background(), &models.DatasourceInfo{ - HTTPClient: nil, - Token: "secret", - URL: "http://localhost:12345", - DbName: "influxdb", - Version: "test", - HTTPMode: "proxy", - SecureGrpc: false, + HTTPClient: nil, + Token: "secret", + URL: "http://localhost:12345", + DbName: "influxdb", + Version: "test", + HTTPMode: "proxy", + InsecureGrpc: true, }, backend.QueryDataRequest{ Queries: []backend.DataQuery{ diff --git a/pkg/tsdb/influxdb/influxdb.go b/pkg/tsdb/influxdb/influxdb.go index 0023ee7b384f..48a376e5db7e 100644 --- a/pkg/tsdb/influxdb/influxdb.go +++ b/pkg/tsdb/influxdb/influxdb.go @@ -82,7 +82,7 @@ func newInstanceSettings(httpClientProvider httpclient.Provider) datasource.Inst DefaultBucket: jsonData.DefaultBucket, Organization: jsonData.Organization, MaxSeries: maxSeries, - SecureGrpc: true, + InsecureGrpc: jsonData.InsecureGrpc, Token: settings.DecryptedSecureJSONData["token"], Timeout: opts.Timeouts.Timeout, } diff --git a/pkg/tsdb/influxdb/models/datasource_info.go b/pkg/tsdb/influxdb/models/datasource_info.go index 8baf8d2e48b1..2e953ed4a794 100644 --- a/pkg/tsdb/influxdb/models/datasource_info.go +++ b/pkg/tsdb/influxdb/models/datasource_info.go @@ -21,5 +21,5 @@ type DatasourceInfo struct { Timeout time.Duration // FlightSQL grpc connection - SecureGrpc bool `json:"secureGrpc"` + InsecureGrpc bool `json:"insecureGrpc"` } diff --git a/public/app/plugins/datasource/influxdb/components/editor/config/InfluxSQLConfig.tsx b/public/app/plugins/datasource/influxdb/components/editor/config/InfluxSQLConfig.tsx index b0134b21cc2e..defdb0b0eaba 100644 --- a/public/app/plugins/datasource/influxdb/components/editor/config/InfluxSQLConfig.tsx +++ b/public/app/plugins/datasource/influxdb/components/editor/config/InfluxSQLConfig.tsx @@ -8,7 +8,7 @@ import { onUpdateDatasourceSecureJsonDataOption, updateDatasourcePluginResetOption, } from '@grafana/data'; -import { Field, InlineLabel, Input, SecretInput, useStyles2 } from '@grafana/ui'; +import { Field, InlineLabel, InlineSwitch, Input, SecretInput, useStyles2 } from '@grafana/ui'; import { InfluxOptions, InfluxSecureJsonData } from '../../../types'; @@ -57,6 +57,25 @@ export const InfluxSqlConfig = (props: Props) => { isConfigured={Boolean(secureJsonFields && secureJsonFields.token)} /> + Insecure Connection} + className={styles.horizontalField} + > + { + onOptionsChange({ + ...options, + jsonData: { + ...jsonData, + insecureGrpc: event.currentTarget.checked, + }, + }); + }} + /> + ); }; diff --git a/public/app/plugins/datasource/influxdb/types.ts b/public/app/plugins/datasource/influxdb/types.ts index b9e257e3fe99..d81cfd0cc153 100644 --- a/public/app/plugins/datasource/influxdb/types.ts +++ b/public/app/plugins/datasource/influxdb/types.ts @@ -23,6 +23,7 @@ export interface InfluxOptions extends DataSourceJsonData { // With SQL metadata?: Array>; + insecureGrpc?: boolean; } /**