Commit Graph

35300 Commits (4a5c1cf52caf752c32537976aadf0443496824a5)

Author SHA1 Message Date
Jonathan A. Sternberg 89916ec98a
build(flux): update flux to v0.161.0 (#23227) 2022-03-24 16:27:32 -05:00
Jonathan A. Sternberg 5231d2d197
feat(query): enable the mqtt pool dialer by default (#23226) 2022-03-24 12:35:10 -05:00
Phil Bracikowski 050449803a
fix(models): reset provided slice correctly (#23223)
A preallocated slice needs to be cleared to be used with append,
otherwise the existing elements will be seen in the result and this does
not appear to be the intention. The bug doesn't seem to have caused
issues as no callsites use a preallocated slice.
2022-03-24 07:37:48 -07:00
Jamie Strandboge e304ef9764
fix: add write permissions check for DELETE and DROP MEASUREMENT (#23219)
We previously allowed read tokens access to all of v1 query, including
InfluxQL queries that made state changes to the DB, specifically,
'DELETE' and 'DROP MEASUREMENT'. This allowed tokens with only read
permissions to delete points via the legacy /query endpoint.
/api/v2/query was unaffected.

This adjusts the behavior to verify that the token has write permissions
when specifying 'DELETE' and 'DROP MEASUREMENT' InfluxQL queries. We
follow the same pattern as other existing v1 failure scenarios and
instead of failing hard with 401, we use ectx.Send() to send an error to
the user (with 200 status):

{"results":[{"statement_id":0,"error":"insufficient permissions"}]}

Returning in this manner is consistent with Cloud 2, which also returns
200 with "insufficient permissions" for these two InfluxQL queries.

To facilitate authorization unit tests, we add MustNewPermission() to
testing/util.go.

Closes: #22799
2022-03-24 07:28:38 -05:00
Jonathan A. Sternberg 5e3ea7b94c
refactor(flux): convert the allocator into an interface (#23214)
This follows the changes from influxdata/flux#4539.
2022-03-22 12:33:52 -05:00
Jamie Strandboge 2c930fd127
feat: add --hardening-enabled option to limit flux/pkger HTTP requests (#23207)
Flux HTTP and template fetching requests do not perform IP address
checks for local addresses. This behavior on the one hand allows SSRF
(Server Side Request Forgery) attacks via authenticated requests but on
the other hand is useful for scenarios that have legitimate requirements
to fetch from private addresses (eg, hosting templates internally or
performing flux queries to local resources during development).

To not break existing installations, the default behavior will remain
the same but a new --hardening-enabled option is added to influxd to
turn on IP address verification and limit both flux and template
fetching HTTP requests to non-private addresses. We plan to enable new
security features that aren't suitable for the default install with this
option.  Put another way, this new option is intended to be used to make
it easy to turn on all security options when running in production
environments. The 'Manage security and authorization' section of the
docs will also be updated for this option.

Specifically for flux, when --hardening-enabled is specified, we now
pass in PrivateIPValidator{} to the flux dependency configuration. The
flux url validator will then tap into the http.Client 'Control'
mechanism to validate the IP address since it is called after DNS lookup
but before the connection starts.

For pkger (template fetching), when --hardening-enabled is specified,
the template parser's HTTP client will be configured to also use
PrivateIPValidator{}. Note that /api/v2/stacks POST ('init', aka create)
and PATCH ('update') only store the new url to be applied later with
/api/v2/templates/apply. While it is possible to have InitStack() and
UpdateStack() mimic net.DialContext() to setup a go routine to perform a
DNS lookup and then loop through the returned addresses to verify none
are for a private IP before storing the url, this would add considerable
complexity to the stacks implementation. Since the stack's urls are
fetched when it is applied and the IP address is verified as part of
apply (see above), for now we'll keep this simple and not validate the
IPs of the stack's urls during init or update.

Lastly, update pkger/http_server_template_test.go's Templates() test for
disabled jsonnet to also check the contents of the 422 error (since the
flux validator also returns a 422 with different message). Also, fix the
URL in one of these tests to use a valid path.
2022-03-18 10:25:31 -04:00
Sam Arnold a40e12b615
feat: allow changing a password with `influxd recovery user update` (#23202)
Closes: #23158
2022-03-18 08:04:29 -04:00
Sam Arnold 3ec5a570e5
fix: tell browser about cookie expiry (#23201)
Closes #17142
2022-03-18 08:04:15 -04:00
Dane Strandboge dedaa7f092
chore: upgrade to go1.17.8 (#23209) 2022-03-17 13:56:33 -05:00
Sam Arnold 253451b5b5
test: unskip flux group tests (#23193) 2022-03-15 16:12:51 -04:00
Sam Arnold df01d93d8b
fix: allow flux http calls to be unlimited (#23191) 2022-03-15 10:01:20 -04:00
Andrew Charlton 4e08604e48
feat: Add MeasurementNames method to MeasurementFieldSet (#23173) 2022-03-15 10:21:38 +00:00
Sean Brickley 7d310c2241
build(flux): update flux to v0.159.0 (#23190) 2022-03-14 13:43:53 -04:00
Sam Arnold 7c0ec4dd2c
fix: replications replicates flux to() writes (#23188)
Fixes a few issues:
* flux needs to write to the replication service, instead of the engine directly.
* the replication service incorrectly had value receiver methods, I think this
was just an accident. Pointer receivers make things easier to reason about. Also
with value receivers flux was not picking up the replication config properly.
* The flux to() function previously did not receive the org properly for internal
writes. Previously this was not necessary as the write path only needs the bucket
ID at this level (after authentication). But now we need the org id to look up
replications properly.

Closes #23183
2022-03-14 12:17:58 -04:00
Sam Arnold 49ce57c029
fix: remove telegraf endpoint pagination (#23182)
This matches InfluxDB Cloud. The pagination was not exposed to the API,
but meant that API requests were limited to the default 20 pages.

Closes: #21407
2022-03-14 12:17:43 -04:00
Paul Hummer 36df687aa8
build(flux): update flux to v0.158.0 (#23175)
* build(flux): update flux to v0.158.0
* chore(upgrade_arrow): upgrade to apache arrow 7
2022-03-10 10:54:41 -08:00
wiedld 355d32b0cf
chore: update OSS ci pipeline to match the updates to monitor-ci (#23169) 2022-03-09 13:17:35 -08:00
mcfarlm3 0c5bedfd98
refactor: improve logging during influxd upgrade to give mapping metadata at info level (#23117) 2022-02-28 16:30:18 -06:00
Jonathan A. Sternberg adf29dfedf
feat(kit/feature): allow influxdb to set flux feature flags (#23123) 2022-02-24 15:29:17 -06:00
Sam Arnold e5ccbb8831
fix: forbid reading OSS buckets for a token with only write permissions (#23148)
* fix: forbid reading OSS buckets for a token with only write permissions

We previously enabled write tokens to also find DBRP buckets, in order to allow
the legacy /write (not /api/v2/write) endpoint to read the DBRP mappings and
find the real bucket id to write to.

This had the unintended consequency of allowing tokens with only write permissions
to read data in buckets via the legacy /query (not /api/v2/query) endpoint with
InfluxQL.

This change fixes the behaviour to allow writing to /write with a write-only
token, while forbidding reading from /query.

* fix: nanosecond precision in tests
2022-02-24 09:59:14 -05:00
Jonathan A. Sternberg afb9733072
build(flux): update flux to v0.156.0 (#23142)
* build(flux): update flux to v0.156.0

* chore(flux/schema): update schema tests to assert planner rules

The schema test where updated in Flux, this updates them here so that we
can assert that the planner rules are applied. See note about copied
data.

Co-authored-by: Nathaniel Cook <nvcook42@gmail.com>
2022-02-22 13:27:23 -06:00
Jonathan A. Sternberg c4717ef469
refactor(query): remove detailed query traces (#23125)
We're removing this functionality from flux because it doesn't work
properly so remove the invocations here.
2022-02-17 11:54:38 -06:00
Dane Strandboge 0bd28f66bc
fix: update 422 dry-run response to conform to API spec (#23121) 2022-02-11 16:28:49 -06:00
Jonathan A. Sternberg 34c150f65c
build(flux): update flux to v0.154.0 (#23116) 2022-02-11 15:44:51 -06:00
Sam Arnold e20b5e99a6
fix: remove nats for scraper processing (#23107)
* fix: remove nats for scraper processing

Scrapers now use go channels instead of NATS and interprocess communication.
This should fix #23085 .

Additionally, found and fixed #23106 .

* chore: fix formatting

* chore: fix static check and go.mod

* test: fix some flaky tests

* fix: mark NATS arguments as deprecated
2022-02-10 11:23:18 -05:00
Sean Brickley f68758bd94
build(flux): update flux to v0.152.0 (#23086)
* build(flux): update flux to v0.152.0

* chore: use latest cross-builder image
2022-02-04 09:38:36 -05:00
Brandon Pfeifer 64615f462b
chore: remove unused dockerfile (#23100) 2022-02-03 15:12:56 -05:00
davidby-influx b8ccf5bbbd
fix: correctly handle PartialWriteError (#23098)
Check for the correctly returned PartialWriteError
in (*shard).validateSeriesAndFields, allow partial
writes.

closes https://github.com/influxdata/influxdb/issues/23096
2022-02-02 14:43:23 -08:00
Jonathan A. Sternberg 2a957c9a56
chore(query/influxql): remove the influxql transpiler (#23000) 2022-01-31 11:34:37 -05:00
Jonathan A. Sternberg 888f82c9c8
build(flux): update flux to v0.150.0 (#23064)
* build(flux): update flux to v0.150.0

* chore: update list of skipped flux integration tests
2022-01-19 11:10:02 -06:00
William Baker 0c30afd308
fix: updating a check does not require an owner id (#23034) 2022-01-13 11:38:01 -08:00
William Baker b02c89edf6
feat: option to log flux queries cancelled because of server shutdown (#23032)
Co-authored-by: DStrand1 <dstrandboge@influxdata.com>
2022-01-11 16:06:36 -06:00
Christopher M. Wolff a812d8b603
build(flux): update flux to v0.148.0 (#23047) 2022-01-11 11:30:01 -08:00
William Baker c1d384de19
test: fix flaky enqueue test (#23035) 2022-01-10 08:04:59 -08:00
William Baker 11c00813f1
fix(templates): disable use of jsonnet with `/api/v2/templates/apply` (#23030) 2021-12-30 12:55:45 -05:00
William Baker 4f74049a52
feat: add downgrade target for 2.1 (#23029) 2021-12-29 13:27:07 -05:00
William Baker c889d0f22b
chore: remove outdated `/docs` folder (#23028) 2021-12-28 15:59:21 -05:00
William Baker a8ca413d14
chore: add deprecation notice for print-config command (#23026) 2021-12-28 13:54:17 -05:00
William Baker f78f9eda9c
feat: api/v2/config endpoint displays runtime configuration (#23003)
* feat: api/v2/config endpoint for runtime config

* feat: use a type switch

* fix: add tests

* chore: add config key to returned json

* chore: update swagger ref
2021-12-23 09:27:39 -05:00
William Baker afb167a2ca
feat: `query-memory-bytes` zero-value is unlimited (#23013) 2021-12-20 19:25:10 -05:00
William Baker b0a0e734e0
chore: remove unused user http code (#23011)
* chore: remove unused user http code

* fix: resolve circular dep

* fix: copy newUserResponse function
2021-12-20 15:17:18 -05:00
William Baker c51a0df1ef
feat: error out when config file contains 1.x config values (#22996)
* feat: error out when config file contains invalid options

* feat: debug logging when loading a config file

* fix: only detect flags from 1.x

* test: update tests to use toml configs
2021-12-15 20:57:01 -06:00
mcfarlm3 60234964d0
refactor: replications local write optimization (#22993)
* refactor: eliminate sqlite query in case of no configured replications

* refactor: updated write-related tests to reflect tracking of orgID and localBucket by the queue manager

* refactor: removed redundant trackedReplications field

* refactor: corrected slice init in GetReplications and added TestGetReplications

* refactor: eliminated tracked package and moved TrackedReplication struct to influxdb package via replication.go

* chore: ran make fmt

* fix: added closeRq function back in to address flaky tests

* refactor: small changes to queue manager test based on code review
2021-12-15 12:32:46 -08:00
davidby-influx 4fd4bd019f
fix: use copy when a rename spans volumes (#22995)
When a file rename fails with EXDEV
(cross device or volume error), copy the
file and delete the original instead.

closes https://github.com/influxdata/influxdb/issues/22890

Co-authored-by: Chris Pahl <sahib@online.de>
2021-12-14 12:58:44 -08:00
Sean Brickley f78c189211
build(flux): update flux to v0.146.0 (#22988)
* build(flux): update flux to v0.146.0

* chore: use new cross-builder image and skip tests
2021-12-13 17:18:30 -05:00
William Baker 5a919b69d7
feat: enable remotes and replication streams feature (#22990) 2021-12-13 16:01:50 -06:00
William Baker 0e5b14fa5e
chore: increase replications batch size limits (#22983) 2021-12-13 11:02:38 -06:00
William Baker a7a5233432
feat: advance queue scanner periodically instead of every remote write (#22981) 2021-12-13 10:09:36 -06:00
William Baker e3ff434f81
test: fix flaky replications tests (#22973)
* fix: fix test and run 20 times

* fix: unfix and run test 20 times

* test: wait for rq run fn to return in tests
2021-12-08 14:48:25 -06:00
William Baker e5cbd279ee
fix: advance replications queue after successful remote writes (#22967)
* fix: advance replications queue after successful remote writes to prevent data duplication on errors

* fix: loop on sendwrite

* chore: remove flaky test

* chore: add TODO about future optimization
2021-12-08 12:52:46 -06:00