diff --git a/.apigentools-info b/.apigentools-info index edc7e019df45..73f7faa8f8fa 100644 --- a/.apigentools-info +++ b/.apigentools-info @@ -4,13 +4,13 @@ "spec_versions": { "v1": { "apigentools_version": "1.6.6", - "regenerated": "2024-01-05 15:09:34.708308", - "spec_repo_commit": "9cbf6566" + "regenerated": "2024-01-05 16:07:34.997873", + "spec_repo_commit": "bafcada7" }, "v2": { "apigentools_version": "1.6.6", - "regenerated": "2024-01-05 15:09:34.723418", - "spec_repo_commit": "9cbf6566" + "regenerated": "2024-01-05 16:07:35.012469", + "spec_repo_commit": "bafcada7" } } } \ No newline at end of file diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index c00a3f8543a0..92f333119ee1 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -16878,6 +16878,44 @@ components: meta: $ref: '#/components/schemas/SensitiveDataScannerMetaVersionOnly' type: object + SensitiveDataScannerIncludedKeywordConfiguration: + description: 'Object defining a set of keywords and a number of characters that + help reduce noise. + + You can provide a list of keywords you would like to check within a defined + proximity of the matching pattern. + + If any of the keywords are found within the proximity check, the match is + kept. + + If none are found, the match is discarded.' + properties: + character_count: + description: 'The number of characters behind a match detected by Sensitive + Data Scanner to look for the keywords defined. + + `character_count` should be greater than the maximum length of a keyword + defined for a rule.' + example: 30 + format: int64 + maximum: 50 + minimum: 1 + type: integer + keywords: + description: 'Keyword list that will be checked during scanning in order + to validate a match. + + The number of keywords in the list must be less than or equal to 20.' + example: + - credit card + - cc + items: + type: string + type: array + required: + - keywords + - character_count + type: object SensitiveDataScannerMeta: description: Meta response containing information about the API. properties: @@ -16971,6 +17009,8 @@ components: items: type: string type: array + included_keyword_configuration: + $ref: '#/components/schemas/SensitiveDataScannerIncludedKeywordConfiguration' is_enabled: description: Whether or not the rule is enabled. type: boolean diff --git a/cassettes/features/v2/sensitive_data_scanner/Create-Scanning-Rule-returns-OK-response.frozen b/cassettes/features/v2/sensitive_data_scanner/Create-Scanning-Rule-returns-OK-response.frozen index 66d9a10b11ff..f93c7c0d6ed2 100644 --- a/cassettes/features/v2/sensitive_data_scanner/Create-Scanning-Rule-returns-OK-response.frozen +++ b/cassettes/features/v2/sensitive_data_scanner/Create-Scanning-Rule-returns-OK-response.frozen @@ -1 +1 @@ -2023-12-13T09:06:38.820Z \ No newline at end of file +2024-01-04T13:51:03.802Z \ No newline at end of file diff --git a/cassettes/features/v2/sensitive_data_scanner/Create-Scanning-Rule-returns-OK-response.yml b/cassettes/features/v2/sensitive_data_scanner/Create-Scanning-Rule-returns-OK-response.yml index fa48d9b8fd3f..c127403080fb 100644 --- a/cassettes/features/v2/sensitive_data_scanner/Create-Scanning-Rule-returns-OK-response.yml +++ b/cassettes/features/v2/sensitive_data_scanner/Create-Scanning-Rule-returns-OK-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Wed, 13 Dec 2023 09:06:38 GMT +- recorded_at: Thu, 04 Jan 2024 13:51:03 GMT request: body: null headers: @@ -10,7 +10,7 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","attributes":{},"type":"sensitive_data_scanner_configuration","relationships":{"groups":{"data":[{"id":"z9vY6YO8R-2q6dv_rTUOCA","type":"sensitive_data_scanner_group"},{"id":"01OnORacS5qHeVO7C97drg","type":"sensitive_data_scanner_group"}]}}},"meta":{"version":127243,"count_limit":100,"group_count_limit":20,"is_pci_compliant":false,"has_highlight_enabled":true,"has_multi_pass_enabled":true},"included":[{"id":"z9vY6YO8R-2q6dv_rTUOCA","attributes":{"name":"Example-Update_Scanning_Group_returns_OK_response_1696199477","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}},{"id":"01OnORacS5qHeVO7C97drg","attributes":{"name":"my-test-group","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}}]} + string: '{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","attributes":{},"type":"sensitive_data_scanner_configuration","relationships":{"groups":{"data":[{"id":"z9vY6YO8R-2q6dv_rTUOCA","type":"sensitive_data_scanner_group"},{"id":"01OnORacS5qHeVO7C97drg","type":"sensitive_data_scanner_group"},{"id":"IuYiCydSTAWqDyW5242-XA","type":"sensitive_data_scanner_group"},{"id":"HwQk4sJHSRmhHyo6KyXHWw","type":"sensitive_data_scanner_group"},{"id":"NChKshYdT6SvdiJE62DQgg","type":"sensitive_data_scanner_group"},{"id":"q6h4G_icTLWHvnT9U90PfQ","type":"sensitive_data_scanner_group"},{"id":"sOpLckMyTYW1ZXMXMeJnnQ","type":"sensitive_data_scanner_group"},{"id":"_o1TJ7yVSoKJLD9ioIyjeQ","type":"sensitive_data_scanner_group"},{"id":"yWBB9T6cQwarJAo0GzrdXw","type":"sensitive_data_scanner_group"}]}}},"meta":{"version":135496,"count_limit":100,"group_count_limit":20,"is_pci_compliant":false,"has_highlight_enabled":true,"has_multi_pass_enabled":true},"included":[{"id":"z9vY6YO8R-2q6dv_rTUOCA","attributes":{"name":"Example-Update_Scanning_Group_returns_OK_response_1696199477","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}},{"id":"01OnORacS5qHeVO7C97drg","attributes":{"name":"my-test-group","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}},{"id":"IuYiCydSTAWqDyW5242-XA","attributes":{"name":"my-test-group","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}},{"id":"HwQk4sJHSRmhHyo6KyXHWw","attributes":{"name":"Example-Create_Scanning_Group_returns_OK_response_1702721006","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}},{"id":"NChKshYdT6SvdiJE62DQgg","attributes":{"name":"my-test-group","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}},{"id":"q6h4G_icTLWHvnT9U90PfQ","attributes":{"name":"my-test-group","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}},{"id":"sOpLckMyTYW1ZXMXMeJnnQ","attributes":{"name":"my-test-group","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}},{"id":"_o1TJ7yVSoKJLD9ioIyjeQ","attributes":{"name":"Example-Create_Scanning_Group_returns_OK_response_1703945006","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}},{"id":"yWBB9T6cQwarJAo0GzrdXw","attributes":{"name":"my-test-group","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}}]} ' headers: @@ -19,7 +19,7 @@ http_interactions: status: code: 200 message: OK -- recorded_at: Wed, 13 Dec 2023 09:06:38 GMT +- recorded_at: Thu, 04 Jan 2024 13:51:03 GMT request: body: encoding: UTF-8 @@ -34,7 +34,7 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"Dyurbbz2Tk23SMEr4fcHCw","attributes":{"name":"my-test-group","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}},"meta":{"version":127244}} + string: '{"data":{"id":"bAkcDr-KRlCrw7Ojq_-tJg","attributes":{"name":"my-test-group","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}},"meta":{"version":135497}} ' headers: @@ -43,11 +43,12 @@ http_interactions: status: code: 200 message: OK -- recorded_at: Wed, 13 Dec 2023 09:06:38 GMT +- recorded_at: Thu, 04 Jan 2024 13:51:03 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"excluded_namespaces":["admin.name"],"is_enabled":true,"name":"Test-Create_Scanning_Rule_returns_OK_response-1702458398","namespaces":["admin"],"pattern":"pattern","priority":1,"tags":["sensitive_data:true"],"text_replacement":{"type":"none"}},"relationships":{"group":{"data":{"id":"Dyurbbz2Tk23SMEr4fcHCw","type":"sensitive_data_scanner_group"}}},"type":"sensitive_data_scanner_rule"},"meta":{}}' + string: '{"data":{"attributes":{"excluded_namespaces":["admin.name"],"included_keyword_configuration":{"character_count":35,"keywords":["credit + card"]},"is_enabled":true,"name":"Test-Create_Scanning_Rule_returns_OK_response-1704376263","namespaces":["admin"],"pattern":"pattern","priority":1,"tags":["sensitive_data:true"],"text_replacement":{"type":"none"}},"relationships":{"group":{"data":{"id":"bAkcDr-KRlCrw7Ojq_-tJg","type":"sensitive_data_scanner_group"}}},"type":"sensitive_data_scanner_rule"},"meta":{}}' headers: Accept: - application/json @@ -58,7 +59,8 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"Xp3fpaEhSGKqtDFmXvJZwQ","attributes":{"name":"Test-Create_Scanning_Rule_returns_OK_response-1702458398","namespaces":["admin"],"excluded_namespaces":["admin.name"],"pattern":"pattern","text_replacement":{"type":"none"},"tags":["sensitive_data:true"],"is_enabled":true,"priority":1},"type":"sensitive_data_scanner_rule","relationships":{"group":{"data":{"id":"Dyurbbz2Tk23SMEr4fcHCw","type":"sensitive_data_scanner_group"}}}},"meta":{"version":127245}} + string: '{"data":{"id":"UwDWflSLSumJJeTlczBlGQ","attributes":{"name":"Test-Create_Scanning_Rule_returns_OK_response-1704376263","namespaces":["admin"],"excluded_namespaces":["admin.name"],"pattern":"pattern","text_replacement":{"type":"none"},"tags":["sensitive_data:true"],"is_enabled":true,"priority":1,"included_keyword_configuration":{"keywords":["credit + card"],"character_count":35}},"type":"sensitive_data_scanner_rule","relationships":{"group":{"data":{"id":"bAkcDr-KRlCrw7Ojq_-tJg","type":"sensitive_data_scanner_group"}}}},"meta":{"version":135498}} ' headers: @@ -67,7 +69,7 @@ http_interactions: status: code: 200 message: OK -- recorded_at: Wed, 13 Dec 2023 09:06:38 GMT +- recorded_at: Thu, 04 Jan 2024 13:51:03 GMT request: body: encoding: UTF-8 @@ -78,11 +80,11 @@ http_interactions: Content-Type: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/sensitive-data-scanner/config/rules/Xp3fpaEhSGKqtDFmXvJZwQ + uri: https://api.datadoghq.com/api/v2/sensitive-data-scanner/config/rules/UwDWflSLSumJJeTlczBlGQ response: body: encoding: UTF-8 - string: '{"meta":{"version":127246}} + string: '{"meta":{"version":135499}} ' headers: @@ -91,7 +93,7 @@ http_interactions: status: code: 200 message: OK -- recorded_at: Wed, 13 Dec 2023 09:06:38 GMT +- recorded_at: Thu, 04 Jan 2024 13:51:03 GMT request: body: encoding: UTF-8 @@ -102,11 +104,11 @@ http_interactions: Content-Type: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/sensitive-data-scanner/config/groups/Dyurbbz2Tk23SMEr4fcHCw + uri: https://api.datadoghq.com/api/v2/sensitive-data-scanner/config/groups/bAkcDr-KRlCrw7Ojq_-tJg response: body: encoding: UTF-8 - string: '{"meta":{"version":127247}} + string: '{"meta":{"version":135500}} ' headers: diff --git a/cassettes/features/v2/sensitive_data_scanner/Update-Scanning-Rule-returns-OK-response.frozen b/cassettes/features/v2/sensitive_data_scanner/Update-Scanning-Rule-returns-OK-response.frozen index da74cd47cfd4..0cca74faaaf8 100644 --- a/cassettes/features/v2/sensitive_data_scanner/Update-Scanning-Rule-returns-OK-response.frozen +++ b/cassettes/features/v2/sensitive_data_scanner/Update-Scanning-Rule-returns-OK-response.frozen @@ -1 +1 @@ -2023-12-13T09:06:40.913Z \ No newline at end of file +2024-01-04T13:51:06.530Z \ No newline at end of file diff --git a/cassettes/features/v2/sensitive_data_scanner/Update-Scanning-Rule-returns-OK-response.yml b/cassettes/features/v2/sensitive_data_scanner/Update-Scanning-Rule-returns-OK-response.yml index 13c22d317dc9..f33073102c86 100644 --- a/cassettes/features/v2/sensitive_data_scanner/Update-Scanning-Rule-returns-OK-response.yml +++ b/cassettes/features/v2/sensitive_data_scanner/Update-Scanning-Rule-returns-OK-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Wed, 13 Dec 2023 09:06:40 GMT +- recorded_at: Thu, 04 Jan 2024 13:51:06 GMT request: body: null headers: @@ -10,7 +10,7 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","attributes":{},"type":"sensitive_data_scanner_configuration","relationships":{"groups":{"data":[{"id":"z9vY6YO8R-2q6dv_rTUOCA","type":"sensitive_data_scanner_group"},{"id":"01OnORacS5qHeVO7C97drg","type":"sensitive_data_scanner_group"}]}}},"meta":{"version":127247,"count_limit":100,"group_count_limit":20,"is_pci_compliant":false,"has_highlight_enabled":true,"has_multi_pass_enabled":true},"included":[{"id":"z9vY6YO8R-2q6dv_rTUOCA","attributes":{"name":"Example-Update_Scanning_Group_returns_OK_response_1696199477","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}},{"id":"01OnORacS5qHeVO7C97drg","attributes":{"name":"my-test-group","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}}]} + string: '{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","attributes":{},"type":"sensitive_data_scanner_configuration","relationships":{"groups":{"data":[{"id":"z9vY6YO8R-2q6dv_rTUOCA","type":"sensitive_data_scanner_group"},{"id":"01OnORacS5qHeVO7C97drg","type":"sensitive_data_scanner_group"},{"id":"IuYiCydSTAWqDyW5242-XA","type":"sensitive_data_scanner_group"},{"id":"HwQk4sJHSRmhHyo6KyXHWw","type":"sensitive_data_scanner_group"},{"id":"NChKshYdT6SvdiJE62DQgg","type":"sensitive_data_scanner_group"},{"id":"q6h4G_icTLWHvnT9U90PfQ","type":"sensitive_data_scanner_group"},{"id":"sOpLckMyTYW1ZXMXMeJnnQ","type":"sensitive_data_scanner_group"},{"id":"_o1TJ7yVSoKJLD9ioIyjeQ","type":"sensitive_data_scanner_group"},{"id":"yWBB9T6cQwarJAo0GzrdXw","type":"sensitive_data_scanner_group"}]}}},"meta":{"version":135500,"count_limit":100,"group_count_limit":20,"is_pci_compliant":false,"has_highlight_enabled":true,"has_multi_pass_enabled":true},"included":[{"id":"z9vY6YO8R-2q6dv_rTUOCA","attributes":{"name":"Example-Update_Scanning_Group_returns_OK_response_1696199477","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}},{"id":"01OnORacS5qHeVO7C97drg","attributes":{"name":"my-test-group","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}},{"id":"IuYiCydSTAWqDyW5242-XA","attributes":{"name":"my-test-group","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}},{"id":"HwQk4sJHSRmhHyo6KyXHWw","attributes":{"name":"Example-Create_Scanning_Group_returns_OK_response_1702721006","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}},{"id":"NChKshYdT6SvdiJE62DQgg","attributes":{"name":"my-test-group","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}},{"id":"q6h4G_icTLWHvnT9U90PfQ","attributes":{"name":"my-test-group","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}},{"id":"sOpLckMyTYW1ZXMXMeJnnQ","attributes":{"name":"my-test-group","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}},{"id":"_o1TJ7yVSoKJLD9ioIyjeQ","attributes":{"name":"Example-Create_Scanning_Group_returns_OK_response_1703945006","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}},{"id":"yWBB9T6cQwarJAo0GzrdXw","attributes":{"name":"my-test-group","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}}]} ' headers: @@ -19,7 +19,7 @@ http_interactions: status: code: 200 message: OK -- recorded_at: Wed, 13 Dec 2023 09:06:40 GMT +- recorded_at: Thu, 04 Jan 2024 13:51:06 GMT request: body: encoding: UTF-8 @@ -34,7 +34,7 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"LAf2eSOlTQ6RTz2rwiQGsA","attributes":{"name":"my-test-group","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}},"meta":{"version":127248}} + string: '{"data":{"id":"UrKepb39S2STztB6JA5RFQ","attributes":{"name":"my-test-group","is_enabled":false,"filter":{"query":"*"},"product_list":["logs"]},"type":"sensitive_data_scanner_group","relationships":{"configuration":{"data":{"id":"7957915c634d4dcb581fa154157f5ad9c2947f50be632fb5599862069f4d2d87","type":"sensitive_data_scanner_configuration"}},"rules":{"data":[]}}},"meta":{"version":135501}} ' headers: @@ -43,11 +43,11 @@ http_interactions: status: code: 200 message: OK -- recorded_at: Wed, 13 Dec 2023 09:06:40 GMT +- recorded_at: Thu, 04 Jan 2024 13:51:06 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"is_enabled":true,"name":"Test-Update_Scanning_Rule_returns_OK_response-1702458400","namespaces":["admin.email"],"pattern":"pattern","tags":["sensitive_data:true"],"text_replacement":{"type":"none"}},"relationships":{"group":{"data":{"id":"LAf2eSOlTQ6RTz2rwiQGsA","type":"sensitive_data_scanner_group"}}},"type":"sensitive_data_scanner_rule"},"meta":{}}' + string: '{"data":{"attributes":{"is_enabled":true,"name":"Test-Update_Scanning_Rule_returns_OK_response-1704376266","namespaces":["admin.email"],"pattern":"pattern","tags":["sensitive_data:true"],"text_replacement":{"type":"none"}},"relationships":{"group":{"data":{"id":"UrKepb39S2STztB6JA5RFQ","type":"sensitive_data_scanner_group"}}},"type":"sensitive_data_scanner_rule"},"meta":{}}' headers: Accept: - application/json @@ -58,7 +58,7 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"N7Hb8CgTRayW0VADXfo9Wg","attributes":{"name":"Test-Update_Scanning_Rule_returns_OK_response-1702458400","namespaces":["admin.email"],"excluded_namespaces":[],"pattern":"pattern","text_replacement":{"type":"none"},"tags":["sensitive_data:true"],"is_enabled":true},"type":"sensitive_data_scanner_rule","relationships":{"group":{"data":{"id":"LAf2eSOlTQ6RTz2rwiQGsA","type":"sensitive_data_scanner_group"}}}},"meta":{"version":127249}} + string: '{"data":{"id":"G0dXCPXuSWaG3WzXKdmwdg","attributes":{"name":"Test-Update_Scanning_Rule_returns_OK_response-1704376266","namespaces":["admin.email"],"excluded_namespaces":[],"pattern":"pattern","text_replacement":{"type":"none"},"tags":["sensitive_data:true"],"is_enabled":true},"type":"sensitive_data_scanner_rule","relationships":{"group":{"data":{"id":"UrKepb39S2STztB6JA5RFQ","type":"sensitive_data_scanner_group"}}}},"meta":{"version":135502}} ' headers: @@ -67,22 +67,23 @@ http_interactions: status: code: 200 message: OK -- recorded_at: Wed, 13 Dec 2023 09:06:40 GMT +- recorded_at: Thu, 04 Jan 2024 13:51:06 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"is_enabled":true,"name":"Test-Update_Scanning_Rule_returns_OK_response-1702458400","pattern":"pattern","priority":5,"tags":["sensitive_data:true"],"text_replacement":{"type":"none"}},"id":"N7Hb8CgTRayW0VADXfo9Wg","relationships":{"group":{"data":{"id":"LAf2eSOlTQ6RTz2rwiQGsA","type":"sensitive_data_scanner_group"}}},"type":"sensitive_data_scanner_rule"},"meta":{}}' + string: '{"data":{"attributes":{"included_keyword_configuration":{"character_count":35,"keywords":["credit + card","cc"]},"is_enabled":true,"name":"Test-Update_Scanning_Rule_returns_OK_response-1704376266","pattern":"pattern","priority":5,"tags":["sensitive_data:true"],"text_replacement":{"type":"none"}},"id":"G0dXCPXuSWaG3WzXKdmwdg","type":"sensitive_data_scanner_rule"},"meta":{}}' headers: Accept: - application/json Content-Type: - application/json method: PATCH - uri: https://api.datadoghq.com/api/v2/sensitive-data-scanner/config/rules/N7Hb8CgTRayW0VADXfo9Wg + uri: https://api.datadoghq.com/api/v2/sensitive-data-scanner/config/rules/G0dXCPXuSWaG3WzXKdmwdg response: body: encoding: UTF-8 - string: '{"meta":{"version":127250}} + string: '{"meta":{"version":135503}} ' headers: @@ -91,7 +92,7 @@ http_interactions: status: code: 200 message: OK -- recorded_at: Wed, 13 Dec 2023 09:06:40 GMT +- recorded_at: Thu, 04 Jan 2024 13:51:06 GMT request: body: encoding: UTF-8 @@ -102,11 +103,11 @@ http_interactions: Content-Type: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/sensitive-data-scanner/config/rules/N7Hb8CgTRayW0VADXfo9Wg + uri: https://api.datadoghq.com/api/v2/sensitive-data-scanner/config/rules/G0dXCPXuSWaG3WzXKdmwdg response: body: encoding: UTF-8 - string: '{"meta":{"version":127251}} + string: '{"meta":{"version":135504}} ' headers: @@ -115,7 +116,7 @@ http_interactions: status: code: 200 message: OK -- recorded_at: Wed, 13 Dec 2023 09:06:40 GMT +- recorded_at: Thu, 04 Jan 2024 13:51:06 GMT request: body: encoding: UTF-8 @@ -126,11 +127,11 @@ http_interactions: Content-Type: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/sensitive-data-scanner/config/groups/LAf2eSOlTQ6RTz2rwiQGsA + uri: https://api.datadoghq.com/api/v2/sensitive-data-scanner/config/groups/UrKepb39S2STztB6JA5RFQ response: body: encoding: UTF-8 - string: '{"meta":{"version":127252}} + string: '{"meta":{"version":135505}} ' headers: diff --git a/examples/v2/sensitive-data-scanner/CreateScanningRule.rb b/examples/v2/sensitive-data-scanner/CreateScanningRule.rb index b32f76531f4d..c0a57ddf3654 100644 --- a/examples/v2/sensitive-data-scanner/CreateScanningRule.rb +++ b/examples/v2/sensitive-data-scanner/CreateScanningRule.rb @@ -27,6 +27,12 @@ ], is_enabled: true, priority: 1, + included_keyword_configuration: DatadogAPIClient::V2::SensitiveDataScannerIncludedKeywordConfiguration.new({ + keywords: [ + "credit card", + ], + character_count: 35, + }), }), relationships: DatadogAPIClient::V2::SensitiveDataScannerRuleRelationships.new({ group: DatadogAPIClient::V2::SensitiveDataScannerGroupData.new({ diff --git a/examples/v2/sensitive-data-scanner/UpdateScanningRule.rb b/examples/v2/sensitive-data-scanner/UpdateScanningRule.rb index 28c85998e663..cc6848aaf43c 100644 --- a/examples/v2/sensitive-data-scanner/UpdateScanningRule.rb +++ b/examples/v2/sensitive-data-scanner/UpdateScanningRule.rb @@ -6,9 +6,6 @@ # the "scanning_group" has a "scanning_rule" RULE_DATA_ID = ENV["RULE_DATA_ID"] -# there is a valid "scanning_group" in the system -GROUP_DATA_ID = ENV["GROUP_DATA_ID"] - body = DatadogAPIClient::V2::SensitiveDataScannerRuleUpdateRequest.new({ meta: DatadogAPIClient::V2::SensitiveDataScannerMetaVersionOnly.new({}), data: DatadogAPIClient::V2::SensitiveDataScannerRuleUpdate.new({ @@ -25,13 +22,12 @@ ], is_enabled: true, priority: 5, - }), - relationships: DatadogAPIClient::V2::SensitiveDataScannerRuleRelationships.new({ - group: DatadogAPIClient::V2::SensitiveDataScannerGroupData.new({ - data: DatadogAPIClient::V2::SensitiveDataScannerGroup.new({ - type: DatadogAPIClient::V2::SensitiveDataScannerGroupType::SENSITIVE_DATA_SCANNER_GROUP, - id: GROUP_DATA_ID, - }), + included_keyword_configuration: DatadogAPIClient::V2::SensitiveDataScannerIncludedKeywordConfiguration.new({ + keywords: [ + "credit card", + "cc", + ], + character_count: 35, }), }), }), diff --git a/features/v2/sensitive_data_scanner.feature b/features/v2/sensitive_data_scanner.feature index 8513e27ce852..0bc18d669448 100644 --- a/features/v2/sensitive_data_scanner.feature +++ b/features/v2/sensitive_data_scanner.feature @@ -39,12 +39,14 @@ Feature: Sensitive Data Scanner Given a valid "configuration" in the system And there is a valid "scanning_group" in the system And new "CreateScanningRule" request - And body with value {"meta":{},"data":{"type":"sensitive_data_scanner_rule","attributes":{"name":"{{ unique }}","pattern":"pattern", "namespaces": ["admin"], "excluded_namespaces": ["admin.name"], "text_replacement":{"type":"none"},"tags":["sensitive_data:true"],"is_enabled":true,"priority":1},"relationships":{"group":{"data":{"type":"{{ group.data.type }}","id":"{{ group.data.id }}"}}}}} + And body with value {"meta":{},"data":{"type":"sensitive_data_scanner_rule","attributes":{"name":"{{ unique }}","pattern":"pattern", "namespaces": ["admin"], "excluded_namespaces": ["admin.name"], "text_replacement":{"type":"none"},"tags":["sensitive_data:true"],"is_enabled":true,"priority":1,"included_keyword_configuration":{"keywords":["credit card"],"character_count":35}},"relationships":{"group":{"data":{"type":"{{ group.data.type }}","id":"{{ group.data.id }}"}}}}} When the request is sent Then the response status is 200 OK And the response "data.type" is equal to "sensitive_data_scanner_rule" And the response "data.attributes.name" is equal to "{{ unique }}" And the response "data.attributes.pattern" is equal to "pattern" + And the response "data.attributes.included_keyword_configuration.character_count" is equal to 35 + And the response "data.attributes.included_keyword_configuration.keywords[0]" is equal to "credit card" @generated @skip @team:DataDog/logs-app @team:DataDog/logs-core Scenario: Delete Scanning Group returns "Bad Request" response @@ -185,7 +187,7 @@ Feature: Sensitive Data Scanner Scenario: Update Scanning Rule returns "Not Found" response Given new "UpdateScanningRule" request And request contains "rule_id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"excluded_namespaces": ["admin.name"], "namespaces": ["admin"], "tags": [], "text_replacement": {"type": "none"}}, "relationships": {"group": {"data": {"type": "sensitive_data_scanner_group"}}, "standard_pattern": {"data": {"type": "sensitive_data_scanner_standard_pattern"}}}, "type": "sensitive_data_scanner_rule"}, "meta": {"version": 0}} + And body with value {"data": {"attributes": {"excluded_namespaces": ["admin.name"], "included_keyword_configuration": {"character_count": 30, "keywords": ["credit card", "cc"]}, "namespaces": ["admin"], "tags": [], "text_replacement": {"type": "none"}}, "relationships": {"group": {"data": {"type": "sensitive_data_scanner_group"}}, "standard_pattern": {"data": {"type": "sensitive_data_scanner_standard_pattern"}}}, "type": "sensitive_data_scanner_rule"}, "meta": {"version": 0}} When the request is sent Then the response status is 404 Not Found @@ -196,6 +198,6 @@ Feature: Sensitive Data Scanner And the "scanning_group" has a "scanning_rule" And new "UpdateScanningRule" request And request contains "rule_id" parameter from "rule.data.id" - And body with value {"meta":{},"data":{"id": "{{ rule.data.id }}", "type":"sensitive_data_scanner_rule","attributes":{"name":"{{ unique }}","pattern":"pattern","text_replacement":{"type":"none"},"tags":["sensitive_data:true"],"is_enabled":true,"priority":5},"relationships":{"group":{"data":{"type":"{{ group.data.type }}","id":"{{ group.data.id }}"}}}}} + And body with value {"meta":{},"data":{"id": "{{ rule.data.id }}", "type":"sensitive_data_scanner_rule","attributes":{"name":"{{ unique }}","pattern":"pattern","text_replacement":{"type":"none"},"tags":["sensitive_data:true"],"is_enabled":true,"priority":5,"included_keyword_configuration": {"keywords": ["credit card", "cc"], "character_count":35}}}} When the request is sent Then the response status is 200 OK diff --git a/lib/datadog_api_client/inflector.rb b/lib/datadog_api_client/inflector.rb index 88d026c3fbda..9a4f218e1cf2 100644 --- a/lib/datadog_api_client/inflector.rb +++ b/lib/datadog_api_client/inflector.rb @@ -1911,6 +1911,7 @@ def overrides "v2.sensitive_data_scanner_group_update" => "SensitiveDataScannerGroupUpdate", "v2.sensitive_data_scanner_group_update_request" => "SensitiveDataScannerGroupUpdateRequest", "v2.sensitive_data_scanner_group_update_response" => "SensitiveDataScannerGroupUpdateResponse", + "v2.sensitive_data_scanner_included_keyword_configuration" => "SensitiveDataScannerIncludedKeywordConfiguration", "v2.sensitive_data_scanner_meta" => "SensitiveDataScannerMeta", "v2.sensitive_data_scanner_meta_version_only" => "SensitiveDataScannerMetaVersionOnly", "v2.sensitive_data_scanner_product" => "SensitiveDataScannerProduct", diff --git a/lib/datadog_api_client/v2/models/sensitive_data_scanner_included_keyword_configuration.rb b/lib/datadog_api_client/v2/models/sensitive_data_scanner_included_keyword_configuration.rb new file mode 100644 index 000000000000..a41bbcc64350 --- /dev/null +++ b/lib/datadog_api_client/v2/models/sensitive_data_scanner_included_keyword_configuration.rb @@ -0,0 +1,134 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Object defining a set of keywords and a number of characters that help reduce noise. + # You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. + # If any of the keywords are found within the proximity check, the match is kept. + # If none are found, the match is discarded. + class SensitiveDataScannerIncludedKeywordConfiguration + include BaseGenericModel + + # The number of characters behind a match detected by Sensitive Data Scanner to look for the keywords defined. + # `character_count` should be greater than the maximum length of a keyword defined for a rule. + attr_reader :character_count + + # Keyword list that will be checked during scanning in order to validate a match. + # The number of keywords in the list must be less than or equal to 20. + attr_reader :keywords + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'character_count' => :'character_count', + :'keywords' => :'keywords' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'character_count' => :'Integer', + :'keywords' => :'Array' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::SensitiveDataScannerIncludedKeywordConfiguration` initialize method" + end + + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + fail ArgumentError, "`#{k}` is not a valid attribute in `DatadogAPIClient::V2::SensitiveDataScannerIncludedKeywordConfiguration`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect + end + h[k.to_sym] = v + } + + if attributes.key?(:'character_count') + self.character_count = attributes[:'character_count'] + end + + if attributes.key?(:'keywords') + if (value = attributes[:'keywords']).is_a?(Array) + self.keywords = value + end + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @character_count.nil? + return false if @character_count > 50 + return false if @character_count < 1 + return false if @keywords.nil? + true + end + + # Custom attribute writer method with validation + # @param character_count [Object] Object to be assigned + # @!visibility private + def character_count=(character_count) + if character_count.nil? + fail ArgumentError, 'invalid value for "character_count", character_count cannot be nil.' + end + if character_count > 50 + fail ArgumentError, 'invalid value for "character_count", must be smaller than or equal to 50.' + end + if character_count < 1 + fail ArgumentError, 'invalid value for "character_count", must be greater than or equal to 1.' + end + @character_count = character_count + end + + # Custom attribute writer method with validation + # @param keywords [Object] Object to be assigned + # @!visibility private + def keywords=(keywords) + if keywords.nil? + fail ArgumentError, 'invalid value for "keywords", keywords cannot be nil.' + end + @keywords = keywords + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + character_count == o.character_count && + keywords == o.keywords + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [character_count, keywords].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/sensitive_data_scanner_rule_attributes.rb b/lib/datadog_api_client/v2/models/sensitive_data_scanner_rule_attributes.rb index e0f4ac903f7b..fe956ce15565 100644 --- a/lib/datadog_api_client/v2/models/sensitive_data_scanner_rule_attributes.rb +++ b/lib/datadog_api_client/v2/models/sensitive_data_scanner_rule_attributes.rb @@ -27,6 +27,12 @@ class SensitiveDataScannerRuleAttributes # Attributes excluded from the scan. If namespaces is provided, it has to be a sub-path of the namespaces array. attr_accessor :excluded_namespaces + # Object defining a set of keywords and a number of characters that help reduce noise. + # You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. + # If any of the keywords are found within the proximity check, the match is kept. + # If none are found, the match is discarded. + attr_accessor :included_keyword_configuration + # Whether or not the rule is enabled. attr_accessor :is_enabled @@ -55,6 +61,7 @@ def self.attribute_map { :'description' => :'description', :'excluded_namespaces' => :'excluded_namespaces', + :'included_keyword_configuration' => :'included_keyword_configuration', :'is_enabled' => :'is_enabled', :'name' => :'name', :'namespaces' => :'namespaces', @@ -71,6 +78,7 @@ def self.openapi_types { :'description' => :'String', :'excluded_namespaces' => :'Array', + :'included_keyword_configuration' => :'SensitiveDataScannerIncludedKeywordConfiguration', :'is_enabled' => :'Boolean', :'name' => :'String', :'namespaces' => :'Array', @@ -107,6 +115,10 @@ def initialize(attributes = {}) end end + if attributes.key?(:'included_keyword_configuration') + self.included_keyword_configuration = attributes[:'included_keyword_configuration'] + end + if attributes.key?(:'is_enabled') self.is_enabled = attributes[:'is_enabled'] end @@ -170,6 +182,7 @@ def ==(o) self.class == o.class && description == o.description && excluded_namespaces == o.excluded_namespaces && + included_keyword_configuration == o.included_keyword_configuration && is_enabled == o.is_enabled && name == o.name && namespaces == o.namespaces && @@ -183,7 +196,7 @@ def ==(o) # @return [Integer] Hash code # @!visibility private def hash - [description, excluded_namespaces, is_enabled, name, namespaces, pattern, priority, tags, text_replacement].hash + [description, excluded_namespaces, included_keyword_configuration, is_enabled, name, namespaces, pattern, priority, tags, text_replacement].hash end end end