From 96ff2d1983c485f7416903cfa3f9968752008978 Mon Sep 17 00:00:00 2001 From: jzonthemtn <jeff.zemerick@philterd.ai> Date: Wed, 23 Oct 2024 17:28:13 -0400 Subject: [PATCH] #11 Working on moving docs. --- CONTRIBUTING.md | 2 +- docs/README.md | 2 +- docs/docs/api_and_sdks/api.md | 13 ++ docs/docs/api_and_sdks/api/alerts_api.md | 30 +++ docs/docs/api_and_sdks/api/filtering_api.md | 123 +++++++++++++ docs/docs/api_and_sdks/api/policies_api.md | 77 ++++++++ docs/docs/api_and_sdks/sdks.md | 7 + docs/docs/deidentification.md | 35 ++++ docs/docs/deidentification/bucketing.md | 2 - docs/docs/deidentification/date-shifting.md | 2 - .../de-identification_README.md | 13 -- docs/docs/deidentification/encryption.md | 2 - .../deidentification/redaction-and-masking.md | 5 - docs/docs/deidentification/replacement.md | 5 - docs/docs/evaluating-performance.md | 48 ++--- docs/docs/howtos/apache_proxy.md | 58 ++++++ docs/docs/howtos/evaluate_performance.md | 174 ++++++++++++++++++ docs/docs/howtos/signed_certificate.md | 76 ++++++++ .../ambiguous-span-example-context.png | Bin .../ambiguous-span-example.png | Bin docs/docs/img/cloudwatchmetrics.png | Bin 0 -> 72519 bytes docs/docs/img/datadog1.png | Bin 0 -> 52201 bytes docs/docs/img/datadog2.png | Bin 0 -> 28758 bytes docs/docs/{images => img}/f1.png | Bin docs/docs/img/google-cloud-marketplace-1.webp | Bin 0 -> 39836 bytes docs/docs/img/http-action.png | Bin 0 -> 24166 bytes docs/docs/img/output.png | Bin 0 -> 39011 bytes .../img/philter-block-diagram-with-redis.png | Bin 0 -> 11800 bytes docs/docs/img/philter-block-diagram.png | Bin 0 -> 6371 bytes docs/docs/img/philter-logo-transparent.png | Bin 0 -> 8586 bytes docs/docs/img/philterd.png | Bin 0 -> 3285 bytes docs/docs/{images => img}/precision.png | Bin docs/docs/img/runs.png | Bin 0 -> 12051 bytes docs/docs/index.md | 18 +- docs/docs/monitoring_and_logging.md | 98 ++++++++++ ...ization.md => consistent_anonymization.md} | 10 +- docs/docs/other_features/dashboard.md | 7 + .../other_features/span_disambiguation.md | 14 +- docs/docs/pii_phi_nppi.md | 34 ++++ docs/docs/policies/document_analysis.md | 30 +++ .../policies/excluding_by_document_type.md | 43 +++++ .../filter_policies.md | 2 +- .../filter_strategies.md | 29 ++- .../{filter_policies => policies}/filters.md | 0 .../filters/common_filters/ages.md | 0 .../common_filters/bank-routing-numbers.md | 0 .../common_filters/bitcoin-addresses.md | 0 .../filters/common_filters/creditcards.md | 0 .../filters/common_filters/dates.md | 0 .../common_filters/drivers-license-numbers.md | 0 .../filters/common_filters/email-addresses.md | 0 .../filters/common_filters/iban-codes.md | 0 .../filters/common_filters/ip-addresses.md | 0 .../filters/common_filters/mac-addresses.md | 0 .../common_filters/passport-numbers.md | 0 .../common_filters/phone-number-extensions.md | 0 .../filters/common_filters/phone-numbers.md | 0 .../filters/common_filters/sections.md | 0 .../filters/common_filters/ssns-and-tins.md | 0 .../common_filters/tracking-numbers.md | 0 .../filters/common_filters/urls.md | 0 .../filters/common_filters/vins.md | 0 .../filters/common_filters/zip-codes.md | 0 .../filters/custom_filters/dictionary.md | 0 .../filters/custom_filters/identifier.md | 0 .../filters/locations/cities.md | 0 .../filters/locations/counties.md | 0 .../locations/hospital-abbreviations.md | 0 .../filters/locations/hospitals.md | 0 .../filters/locations/state-abbreviations.md | 0 .../filters/locations/states.md | 0 .../filters/persons_names/first-names.md | 0 .../persons_names/persons-names-ner.md | 0 .../persons_names/physician-names-ner.md | 0 .../filters/persons_names/surnames.md | 0 .../ignoring_specific_information.md} | 3 +- .../sample_policies.md} | 2 +- docs/docs/policies/splitting_input_text.md | 51 +++++ docs/docs/quick_starts/quick_start_aws.md | 56 ++++++ docs/docs/quick_starts/quick_start_azure.md | 57 ++++++ docs/docs/quick_starts/quick_start_gcp.md | 56 ++++++ docs/docs/settings.md | 6 +- .../docs/solutions/apache-nifi-and-philter.md | 27 +++ .../consistent-anonymization-with-redis.md | 39 ++++ ...eploying-philter-in-a-hipaa-environment.md | 33 ++++ ...lter-via-an-aws-cloudformation-template.md | 36 ++++ ...guration-in-an-auto-scaling-environment.md | 24 +++ .../solutions/monitoring-philter-in-aws.md | 56 ++++++ ...nsitive-information-from-streaming-text.md | 100 ++++++++++ ...lter-with-microsoft-power-automate-flow.md | 20 ++ docs/docs/system_requirements.md | 9 + docs/docs/upgrading.md | 33 ++++ docs/mkdocs.yml | 81 ++++++-- 93 files changed, 1541 insertions(+), 107 deletions(-) create mode 100644 docs/docs/api_and_sdks/api.md create mode 100644 docs/docs/api_and_sdks/api/alerts_api.md create mode 100644 docs/docs/api_and_sdks/api/filtering_api.md create mode 100644 docs/docs/api_and_sdks/api/policies_api.md create mode 100644 docs/docs/api_and_sdks/sdks.md create mode 100644 docs/docs/deidentification.md delete mode 100644 docs/docs/deidentification/bucketing.md delete mode 100644 docs/docs/deidentification/date-shifting.md delete mode 100644 docs/docs/deidentification/de-identification_README.md delete mode 100644 docs/docs/deidentification/encryption.md delete mode 100644 docs/docs/deidentification/redaction-and-masking.md delete mode 100644 docs/docs/deidentification/replacement.md create mode 100644 docs/docs/howtos/apache_proxy.md create mode 100644 docs/docs/howtos/evaluate_performance.md create mode 100644 docs/docs/howtos/signed_certificate.md rename docs/docs/{images => img}/ambiguous-span-example-context.png (100%) rename docs/docs/{images => img}/ambiguous-span-example.png (100%) create mode 100644 docs/docs/img/cloudwatchmetrics.png create mode 100644 docs/docs/img/datadog1.png create mode 100644 docs/docs/img/datadog2.png rename docs/docs/{images => img}/f1.png (100%) create mode 100644 docs/docs/img/google-cloud-marketplace-1.webp create mode 100644 docs/docs/img/http-action.png create mode 100644 docs/docs/img/output.png create mode 100644 docs/docs/img/philter-block-diagram-with-redis.png create mode 100644 docs/docs/img/philter-block-diagram.png create mode 100644 docs/docs/img/philter-logo-transparent.png create mode 100644 docs/docs/img/philterd.png rename docs/docs/{images => img}/precision.png (100%) create mode 100644 docs/docs/img/runs.png create mode 100644 docs/docs/monitoring_and_logging.md rename docs/docs/other_features/{anonymization.md => consistent_anonymization.md} (74%) create mode 100644 docs/docs/other_features/dashboard.md create mode 100644 docs/docs/pii_phi_nppi.md create mode 100644 docs/docs/policies/document_analysis.md create mode 100644 docs/docs/policies/excluding_by_document_type.md rename docs/docs/{filter_policies => policies}/filter_policies.md (97%) rename docs/docs/{filter_policies => policies}/filter_strategies.md (91%) rename docs/docs/{filter_policies => policies}/filters.md (100%) rename docs/docs/{filter_policies => policies}/filters/common_filters/ages.md (100%) rename docs/docs/{filter_policies => policies}/filters/common_filters/bank-routing-numbers.md (100%) rename docs/docs/{filter_policies => policies}/filters/common_filters/bitcoin-addresses.md (100%) rename docs/docs/{filter_policies => policies}/filters/common_filters/creditcards.md (100%) rename docs/docs/{filter_policies => policies}/filters/common_filters/dates.md (100%) rename docs/docs/{filter_policies => policies}/filters/common_filters/drivers-license-numbers.md (100%) rename docs/docs/{filter_policies => policies}/filters/common_filters/email-addresses.md (100%) rename docs/docs/{filter_policies => policies}/filters/common_filters/iban-codes.md (100%) rename docs/docs/{filter_policies => policies}/filters/common_filters/ip-addresses.md (100%) rename docs/docs/{filter_policies => policies}/filters/common_filters/mac-addresses.md (100%) rename docs/docs/{filter_policies => policies}/filters/common_filters/passport-numbers.md (100%) rename docs/docs/{filter_policies => policies}/filters/common_filters/phone-number-extensions.md (100%) rename docs/docs/{filter_policies => policies}/filters/common_filters/phone-numbers.md (100%) rename docs/docs/{filter_policies => policies}/filters/common_filters/sections.md (100%) rename docs/docs/{filter_policies => policies}/filters/common_filters/ssns-and-tins.md (100%) rename docs/docs/{filter_policies => policies}/filters/common_filters/tracking-numbers.md (100%) rename docs/docs/{filter_policies => policies}/filters/common_filters/urls.md (100%) rename docs/docs/{filter_policies => policies}/filters/common_filters/vins.md (100%) rename docs/docs/{filter_policies => policies}/filters/common_filters/zip-codes.md (100%) rename docs/docs/{filter_policies => policies}/filters/custom_filters/dictionary.md (100%) rename docs/docs/{filter_policies => policies}/filters/custom_filters/identifier.md (100%) rename docs/docs/{filter_policies => policies}/filters/locations/cities.md (100%) rename docs/docs/{filter_policies => policies}/filters/locations/counties.md (100%) rename docs/docs/{filter_policies => policies}/filters/locations/hospital-abbreviations.md (100%) rename docs/docs/{filter_policies => policies}/filters/locations/hospitals.md (100%) rename docs/docs/{filter_policies => policies}/filters/locations/state-abbreviations.md (100%) rename docs/docs/{filter_policies => policies}/filters/locations/states.md (100%) rename docs/docs/{filter_policies => policies}/filters/persons_names/first-names.md (100%) rename docs/docs/{filter_policies => policies}/filters/persons_names/persons-names-ner.md (100%) rename docs/docs/{filter_policies => policies}/filters/persons_names/physician-names-ner.md (100%) rename docs/docs/{filter_policies => policies}/filters/persons_names/surnames.md (100%) rename docs/docs/{filter_policies/ignoring_sensitive_information.md => policies/ignoring_specific_information.md} (99%) rename docs/docs/{filter_policies/sample_filter_policies.md => policies/sample_policies.md} (99%) create mode 100644 docs/docs/policies/splitting_input_text.md create mode 100644 docs/docs/quick_starts/quick_start_aws.md create mode 100644 docs/docs/quick_starts/quick_start_azure.md create mode 100644 docs/docs/quick_starts/quick_start_gcp.md create mode 100644 docs/docs/solutions/apache-nifi-and-philter.md create mode 100644 docs/docs/solutions/consistent-anonymization-with-redis.md create mode 100644 docs/docs/solutions/deploying-philter-in-a-hipaa-environment.md create mode 100644 docs/docs/solutions/deploying-philter-via-an-aws-cloudformation-template.md create mode 100644 docs/docs/solutions/managing-philters-configuration-in-an-auto-scaling-environment.md create mode 100644 docs/docs/solutions/monitoring-philter-in-aws.md create mode 100644 docs/docs/solutions/using-aws-kinesis-firehose-transformations-to-filter-sensitive-information-from-streaming-text.md create mode 100644 docs/docs/solutions/using-philter-with-microsoft-power-automate-flow.md create mode 100644 docs/docs/system_requirements.md create mode 100644 docs/docs/upgrading.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8dd142a..25bc04e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,4 +2,4 @@ In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. -Please read and understand the [Code of Conduct](https://github.com/philterd/phileas/blob/main/CODE_OF_CONDUCT.md). +Please read and understand the [Code of Conduct](https://github.com/philterd/philter/blob/main/CODE_OF_CONDUCT.md). diff --git a/docs/README.md b/docs/README.md index cb48207..8620beb 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,4 +1,4 @@ -# Phileas Documentation +# Philter Documentation The documentation files here are markdown files used by MkDocs. diff --git a/docs/docs/api_and_sdks/api.md b/docs/docs/api_and_sdks/api.md new file mode 100644 index 0000000..05d7db4 --- /dev/null +++ b/docs/docs/api_and_sdks/api.md @@ -0,0 +1,13 @@ +# API + +Philter's API is divided into three parts, the [Filtering API](api/filtering_api.md) the [Policies API](api/policies_api.md), and the [Alerts API](api/alerts_api.md). + +* [Filtering API](api/filtering_api.md) - The filtering API is used to redact text. With the filtering API, you can send text or PDF documents to Philter and receive back the redacted text or PDF document. +* [Policies API](api/policies_api.md) - The policies API allows you to create, modify, and delete [policies](../policies/filter_policies.md). Policies can also be created manually with access to Philter, but the API provides a programmatic way to manage policies. +* [Alerts API](api/alerts_api.md) - The alerts API allows you to get and delete [alerts](../other_features/alerts.md) that were generated during redaction. + +The Philter [SDKs](sdks.md) provide convenient methods for using Philter's API methods for various programming languages. + +## Securing Philter's API + +Philter's API supports one-way and two-way SSL/TLS authentication. See the [settings](../settings.md) for more information. diff --git a/docs/docs/api_and_sdks/api/alerts_api.md b/docs/docs/api_and_sdks/api/alerts_api.md new file mode 100644 index 0000000..fb0882a --- /dev/null +++ b/docs/docs/api_and_sdks/api/alerts_api.md @@ -0,0 +1,30 @@ +# Alerts API + +The Alerts API provides endpoints for retrieving and deleting alerts. Alerts can optionally be generated when a filter strategy's condition is met. See [Alerts](alerts.md) for more information on Philter alerts. + +> The `curl` example commands shown on this page are written assuming Philter has been enabled for SSL and it is using a self-signed certificate. If launched from a cloud marketplace, SSL will be enabled automatically with a self-signed SSL certificate. See the [SSL/TLS ](settings.md#ssl-tls) settings for more information. +{style="note"} + +## Get Alerts + +| Method | Endpoint | Description | +| ------ | -------- | ----------- | +| `GET` | `/api/alerts` | Get alerts. | + +Example request: + +``` +curl -k https://localhost:8080/api/alerts +``` + +## Delete an Alert + +| Method | Endpoint | Description | +|----------|-------------------------|--------------------------------------------------------------------| +| `DELETE` | `/api/alerts/{alertId}` | Delete an alert, where `alertId` is the ID of the alert to delete. | + +Example request to delete an alert with id `12345`: + +``` +curl -k -X DELETE https://localhost:8080/api/alerts/12345 +``` \ No newline at end of file diff --git a/docs/docs/api_and_sdks/api/filtering_api.md b/docs/docs/api_and_sdks/api/filtering_api.md new file mode 100644 index 0000000..f2f627c --- /dev/null +++ b/docs/docs/api_and_sdks/api/filtering_api.md @@ -0,0 +1,123 @@ +# Filtering API + +Philter’s filtering API provides access to Philter’s ability to filter sensitive information from text and to retrieve the health status of Philter. + +> The `curl` example commands shown on this page are written assuming Philter has been enabled for SSL and it is using a self-signed certificate. If launched from a cloud marketplace, SSL will be enabled automatically with a self-signed SSL certificate. See the [SSL/TLS ](settings.md#ssl-tls) settings for more information. +{style="note"} + +Each filter request can optionally have a `context`. When not provided, the context defaults to `none`. Contexts provide a means for logically grouping your documents during filtering. For example, documents pertaining to one health care provider may be submitted under the context `hospital1`, and documents pertaining to another health care provider may be submitted under the context `hospital2`. + +The context for each filter request impacts how sensitive information is replaced when found in the text. [Consistent anonymization](anonymization.md) can be enabled at either the context or document level. When enabled at the context level, all instances of a given piece of sensitive information will be replaced consistently by the same value. This allows for maintaining meaning across all documents in the context. + +Each filter request submitted to Philter is automatically assigned a document identifier. The document identifier is an alphanumeric value unique to that request. No two documents should be assigned the same document identifier. The document identifier is returned in the `x-document-id` header with each `filter` or `explain` API response. + +## Filter + +The `filter` endpoint receives plain text or a PDF document and returns the redacted text or redacted PDF document. + +The types of sensitive information found and how each type is redacted is determined by the chosen policy. + +| Method | Endpoint | Description | +|--------|---------------|------------------------| +| `POST` | `/api/filter` | Filter the given text. | + +### Query Parameters + +* `d` - A document ID that uniquely identifies the text being submitted. Leave empty and Philter will generate a document ID derived from a hash of the submitted text. +* `p` - The name of the policy to use for filtering. Defaults to `default` if not provided. +* `c` - The filtering context. Defaults to `none` if not provided. + +### Headers + +* `Content-Type` - The value should be set to `text/plain` or `application/pdf`. + +Example request to filter plain text: + +``` +curl -k -X POST "https://localhost:8080/api/filter" -d @file.txt -H Content-Type "text/plain" +``` + +Example request to filter a PDF document: + +``` +curl -k -X POST "https://localhost:8080/api/filter?" -d @file.pdf -H Content-Type "application/pdf" -O redacted.zip +``` + +## Explain + +The `explain` endpoint behaves much like the `filter` endpoint in that receives plain text and returns the redacted plain text. However, the `explain` endpoint provides a detailed explanation describing how the text was redacted. Also, the `explain` endpoint does not support PDF documents. + +The types of sensitive information found and how each type is redacted is determined by the chosen policy. + +| Method | Endpoint | Description | +|--------|----------------|-----------------------------------------------------------| +| `POST` | `/api/explain` | Filter the given text and provide a detailed explanation. | + +### Query Parameters + +* `d` - A document ID that uniquely identifies the text being submitted. Leave empty and Philter will generate a document ID derived from a hash of the submitted text. +* `p` - The name of the policy to use for filtering. Defaults to `default` if not provided. +* `c` - The filtering context. Defaults to `none` if not provided. + +### Headers + +* `Content-Type` - The value should be set to `text/plain`. + +Example explain request: + +``` +curl -k -X POST "https://localhost:8080/api/explain" -d @file.txt -H Content-Type "text/plain" +``` + +Example explain response: + +``` +{ + "filteredText": "{{{REDACTED-entity}}} was a patient and his ssn was {{{REDACTED-ssn}}}.", + "context": "none", + "documentId": "7a906866-4fc9-44d6-9bc3-22728b93a602", + "explanation": { + "appliedSpans": [ + { + "id": "c78fb69c-84d6-4189-b376-63791793cbd2", + "characterStart": 0, + "characterEnd": 17, + "filterType": "NER_ENTITY", + "context": "C1", + "documentId": "7a906866-4fc9-44d6-9bc3-22728b93a602", + "confidence": 0.9189682900905609, + "text": "George Washington", + "replacement": "{{{REDACTED-entity}}}", + "ignored": false + }, + { + "id": "f4556f62-2f80-4edc-96f0-aa1d44802157", + "characterStart": 48, + "characterEnd": 59, + "filterType": "SSN", + "context": "C1", + "documentId": "7a906866-4fc9-44d6-9bc3-22728b93a602", + "confidence": 1, + "text": "123-45-6789", + "replacement": "{{{REDACTED-ssn}}}", + "ignored": false + } + ], + "ignoredSpans": [] + } +} +``` + +## Status + +The `status` endpoint is useful in determining the current state of Philter. The `status` endpoint can be used by monitoring software to assess Philter's availability or by your cloud provider for purposes of determining Philter's health when deployed behind a load balancer. + +| Method | Endpoint | Description | +|--------|---------------|-----------------------------| +| `GET` | `/api/status` | Gets the status of Philter. | + +Example request: + +``` +curl -k -X POST "https://localhost:8080/api/status" +``` diff --git a/docs/docs/api_and_sdks/api/policies_api.md b/docs/docs/api_and_sdks/api/policies_api.md new file mode 100644 index 0000000..adbcb47 --- /dev/null +++ b/docs/docs/api_and_sdks/api/policies_api.md @@ -0,0 +1,77 @@ +# Policies API + +The Policies API provides endpoints for retrieving, uploading, and deleting [policies](policies_README.md). + +> The `curl` example commands shown on this page are written assuming Philter has been enabled for SSL and it is using a self-signed certificate. If launched from a cloud marketplace, SSL will be enabled automatically with a self-signed SSL certificate. See the [SSL/TLS ](settings.md#ssl-tls) settings for more information. +{style="note"} + +## Get Policy Names + +| Method | Endpoint | Description | +| ------ |-----------------|--------------------------------| +| `GET` | `/api/policies` | Get the names of all policies. | + + +Example request: + +``` +curl -k https://localhost:8080/api/policies +``` + +## Get a Policy + +| Method | Endpoint | Description | +| ------ |------------------------------|-----------------------------------------------------------------------------------| +| `GET` | `/api/policies/{policyName}` | Get the content of a policy, where {policyName} is the name of the policy to get. | + +Example request: + +``` +curl -k https://localhost:8080/api/policies/my-policy +``` + +Example response: + +``` +{ + "name": "just-phone-numbers", + "ignored": [ + ], + "identifiers": { + "dictionaries": [ + ], + "phoneNumber": { + "phoneNumberFilterStrategies": [ + { + "strategy": "REDACT", + "redactionFormat": "{{{REDACTED-%t}}}" + } + ] + } + } +} +``` + +## Upload a Policy + +| Method | Endpoint | Description | +| ------ |------------------------------|-----------------------------------------------------------------------------------| +| `PUT` | `/api/policies/{policyName}` | Upload a policy, where {policyName} is the name of the policy to get. If a policy with this name already exists it will be overwritten.| + +Example request: + +``` +curl -X PUT -H "Content-Type: application/json" -k https://localhost:8080/api/profiles/my-profile -d @policy.json +``` + +## Delete a Policy + +| Method | Endpoint | Description | +|----------|------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------| +| `DELETE` | `/api/policies/{policyName}` | Delete a policy, where {policyName} is the name of the policy to delete. | + +Example request: + +``` +curl -X DELETE -k https://localhost:8080/api/policies/exprofile +``` diff --git a/docs/docs/api_and_sdks/sdks.md b/docs/docs/api_and_sdks/sdks.md new file mode 100644 index 0000000..ac4a284 --- /dev/null +++ b/docs/docs/api_and_sdks/sdks.md @@ -0,0 +1,7 @@ +# Client SDKs + +Philter SDKs are available for use in your projects. The SDKs are licensed under the Apache License, version 2.0]. Refer to the GitHub projects below for your language of choice for usage examples. + +* [Java](https://github.com/philterd/philter-sdk-java) +* [.NET](https://github.com/philterd/philter-sdk-net) +* [Go](https://github.com/philterd/philter-sdk-golang) diff --git a/docs/docs/deidentification.md b/docs/docs/deidentification.md new file mode 100644 index 0000000..3bfb46f --- /dev/null +++ b/docs/docs/deidentification.md @@ -0,0 +1,35 @@ +# De-identification Methods + +There are several ways data can be de-identified, and which you use depends on the types of data you want to de-identify and your use-case for de-identifying the data. The terminology around the different methods is often used interchangeably, but there are differences between each method. + +> In this User's Guide, we may use the terms `filter` and `redact` interchangeably. + +In Philter, de-identification methods vary for each type of sensitive information. For example, all types can be replaced or redacted, but only dates can be shifted and only zip codes can be truncated. How a de-identification method is applied by Philter is called a filter strategy. Each type of sensitive information can have one or more filter strategies, and the combination of the filter strategies you select is called a policy. A policy determines how a document will be de-identified. + +The following is a list of de-identification methods that describes how each method works and its applicability to Philter. Deidentifying a document is likely to require a combination of the following methods. For instance, you may want to redact names, encrypt credit card numbers, and shift appointment dates. + +## Summary of Deidentification Methods + +<table><thead><tr><th width="268">De-identification Method</th><th>Description</th></tr></thead><tbody><tr><td>Replacement</td><td>Replaces sensitive information with a defined value. For example, you might want to replace a credit card number with the literal value "CREDIT_CARD_NUMBER".</td></tr><tr><td>Redaction and Masking</td><td>Removes sensitive information. Philter gives you a choice of how to remove the sensitive information, whether it is by replacing it with ***** (masking) or by some other set of characters.</td></tr><tr><td>Encryption</td><td>Encrypts sensitive information.</td></tr><tr><td>Date Shifting</td><td>Shifts dates either forward or backward by some interval.</td></tr><tr><td>Bucketing</td><td>Categorizes data into buckets based on the data. Examples of bucketing is Philter can bucket dates into years, and zip codes by population.</td></tr></tbody></table> + +> A difference between [Philter](https://philterd.ai/philter/) and other services is that Philter does not send your data to a third party for de-identification. Philter runs in your cloud and your data stays in your cloud. + +## Deidentification Methods + +### Redaction and Masking + +Redaction and masking are two methods of de-identification that are often used interchangeably. The term redaction refers to removing a sensitive value from a document. When we hear the term redaction we often think of an image of a document with black bars across pieces of the text. + +Masking is similar to redaction but allows for configuring how the sensitive value is removed. The most common example is using asterisks (i.e. \*\*\*\*\*\*) in place of a sensitive value. + +### Replacement + +Replacement is a method of de-identification that simply replaces a sensitive value with another value. Replacement is useful when the sensitive value is not needed once the document has been de-identified. Philter can replace a sensitive value with a preset value or with a random value. + +In Philter's filter strategies, replacement is achieved by using the strategy to `REDACT`, `STATIC_REPLACE` , or `RANDOM_REPLACE` . + +### Bucketing + +### Date Shifting + +### Encryption \ No newline at end of file diff --git a/docs/docs/deidentification/bucketing.md b/docs/docs/deidentification/bucketing.md deleted file mode 100644 index e074e7b..0000000 --- a/docs/docs/deidentification/bucketing.md +++ /dev/null @@ -1,2 +0,0 @@ -# Bucketing - diff --git a/docs/docs/deidentification/date-shifting.md b/docs/docs/deidentification/date-shifting.md deleted file mode 100644 index 5facb6c..0000000 --- a/docs/docs/deidentification/date-shifting.md +++ /dev/null @@ -1,2 +0,0 @@ -# Date Shifting - diff --git a/docs/docs/deidentification/de-identification_README.md b/docs/docs/deidentification/de-identification_README.md deleted file mode 100644 index 8fe10df..0000000 --- a/docs/docs/deidentification/de-identification_README.md +++ /dev/null @@ -1,13 +0,0 @@ -# De-identification Methods - -There are several ways data can be de-identified, and which you use depends on the types of data you want to de-identify and your use-case for de-identifying the data. The terminology around the different methods is often used interchangeably, but there are differences between each method. - -> In this User's Guide, we may use the terms `filter` and `redact` interchangeably. - -In Philter, de-identification methods vary for each type of sensitive information. For example, all types can be replaced or redacted, but only dates can be shifted and only zip codes can be truncated. How a de-identification method is applied by Philter is called a filter strategy. Each type of sensitive information can have one or more filter strategies, and the combination of the filter strategies you select is called a policy. A policy determines how a document will be de-identified. - -The following is a list of de-identification methods that describes how each method works and its applicability to our [Philter](https://philterd.ai/philter/) software. De-identifying a document is likely to require a combination of the following methods. For instance, you may want to redact names, encrypt credit card numbers, and shift appointment dates. - -<table><thead><tr><th width="268">De-identification Method</th><th>Description</th></tr></thead><tbody><tr><td><a href="replacement.md">Replacement</a></td><td>Replaces sensitive information with a defined value. For example, you might want to replace a credit card number with the literal value "CREDIT_CARD_NUMBER".</td></tr><tr><td><a href="redaction-and-masking.md">Redaction and Masking</a></td><td>Removes sensitive information. Our Philter software gives you a choice of how to remove the sensitive information, whether it is by replacing it with ***** (masking) or by some other set of characters.</td></tr><tr><td><a href="encryption.md">Encryption</a></td><td>Encrypts sensitive information.</td></tr><tr><td><a href="date-shifting.md">Date Shifting</a></td><td>Shifts dates either forward or backward by some interval.</td></tr><tr><td><a href="bucketing.md">Bucketing</a></td><td>Categorizes data into buckets based on the data. Examples of bucketing is Philter can bucket dates into years, and zip codes by population.</td></tr></tbody></table> - -> A difference between [Philter](https://philterd.ai/philter/) and other services is that Philter does not send your data to a third-party for de-identification. Philter runs in your cloud and your data stays in your cloud. \ No newline at end of file diff --git a/docs/docs/deidentification/encryption.md b/docs/docs/deidentification/encryption.md deleted file mode 100644 index ec5b8cf..0000000 --- a/docs/docs/deidentification/encryption.md +++ /dev/null @@ -1,2 +0,0 @@ -# Encryption - diff --git a/docs/docs/deidentification/redaction-and-masking.md b/docs/docs/deidentification/redaction-and-masking.md deleted file mode 100644 index 8c0fd5c..0000000 --- a/docs/docs/deidentification/redaction-and-masking.md +++ /dev/null @@ -1,5 +0,0 @@ -# Redaction and Masking - -Redaction and masking are two methods of de-identification that are often used interchangeably. The term redaction refers to removing a sensitive value from a document. When we hear the term redaction we often think of an image of a document with black bars across pieces of the text. - -Masking is similar to redaction but allows for configuring how the sensitive value is removed. The most common example is using asterisks (i.e. \*\*\*\*\*\*) in place of a sensitive value. diff --git a/docs/docs/deidentification/replacement.md b/docs/docs/deidentification/replacement.md deleted file mode 100644 index 55b9819..0000000 --- a/docs/docs/deidentification/replacement.md +++ /dev/null @@ -1,5 +0,0 @@ -# Replacement - -Replacement is a method of de-identification that simply replaces a sensitive value with another value. Replacement is useful when the sensitive value is not needed once the document has been de-identified. Philter can replace a sensitive value with a preset value or with a random value. - -In Philter's filter strategies, replacement is achieved by using the strategy to `REDACT`, `STATIC_REPLACE` , or `RANDOM_REPLACE` . diff --git a/docs/docs/evaluating-performance.md b/docs/docs/evaluating-performance.md index c4566df..fc92a83 100644 --- a/docs/docs/evaluating-performance.md +++ b/docs/docs/evaluating-performance.md @@ -1,29 +1,29 @@ -# How to Evaluate Phileas' Performance +# How to Evaluate Philter'ss Performance -A common question we receive is how well does Phileas perform? Our answer to this question is probably less than satisfactory because it simply depends. What does it depend on? Phileas' performance is heavily dependent upon your individual data. Sharing to compare metrics of Phileas' performance between different customer datasets is like comparing apples and oranges. +A common question we receive is how well does Philter perform? Our answer to this question is probably less than satisfactory because it simply depends. What does it depend on? Philter's performance is heavily dependent upon your individual data. Sharing to compare metrics of Philter's performance between different customer datasets is like comparing apples and oranges. -If your data is not exactly like another customer's data then the metrics will not be applicable to your data. In terms of the classic information retrieval metrics precision and recall, comparing these values between customers can give false impressions about Phileas' performance, both good and bad. +If your data is not exactly like another customer's data then the metrics will not be applicable to your data. In terms of the classic information retrieval metrics precision and recall, comparing these values between customers can give false impressions about Philter's performance, both good and bad. -> This guide walks you through how to evaluate Phileas' performance. If you are just getting started with Phileas please see the Quick Starts instead. Then you can come back here to learn how to evaluate Phileas' performance. +> This guide walks you through how to evaluate Philter's performance. If you are just getting started with Philter please see the Quick Starts instead. Then you can come back here to learn how to evaluate Philter'ss performance. ## Guide to Evaluating Performance -We have created this guide to help guide you in evaluating Phileas' performance on your data. The guide involves determining the types of sensitive information you want to redact, configuring those filters, optimizing the configuration, and then capturing the performance metrics. +We have created this guide to help guide you in evaluating Philter's performance on your data. The guide involves determining the types of sensitive information you want to redact, configuring those filters, optimizing the configuration, and then capturing the performance metrics. -> If you are using Philter we will gladly perform these steps for you and provide you a detailed Phileas performance report generated from your data. Please contact us to start the process. +> If you are using Philter we will gladly perform these steps for you and provide you a detailed Philter performance report generated from your data. Please contact us to start the process. #### What You Need -To evaluate Phileas' performance you need: +To evaluate Philter's performance you need: -* An application using Phileas. +* An application using Philter. * A list of the types of sensitive information you want to redact. -* A data set representative of the text you will be redacting using Phileas. It's important the data set be representative so the evaluation results will transfer to the actual data redaction. +* A data set representative of the text you will be redacting using Philter. It's important the data set be representative so the evaluation results will transfer to the actual data redaction. * The same data set but with annotated sensitive information. These annotations will be used to calculate the precision and recall metrics. -#### Configuring Phileas +#### Configuring Philter -Before we can begin our evaluation we need to create a policy. A [policy](policies_README.md) is a file that defines the types of sensitive information that will be redacted and how it will be redacted. The policies are stored on the Phileas instance under `/opt/Phileas/policies`. You can edit the policies directly there using a text editor or you can use Phileas' [API](policies-api.md) to upload a policy. In this case we recommend just using a text editor on the Phileas instance to create a policy. +Before we can begin our evaluation we need to create a policy. A [policy](policies/filter_policies.md) is a file that defines the types of sensitive information that will be redacted and how it will be redacted. The policies are stored on the Philter instance under `/opt/Philter/policies`. You can edit the policies directly there using a text editor or you can use Philter's [API](policies-api.md) to upload a policy. In this case we recommend just using a text editor on the Philter instance to create a policy. When using a text editor to create and edit a policy, be sure to save the policy often. Frequent saving can make editing a policy easier. @@ -33,9 +33,9 @@ We also recommend considering to place your policy directory under source contro Make a copy of the default policy, and we will modify the copy for our needs. -`cp /opt/Phileas/policies/default.json /opt/Phileas/policies/evaluation.json` +`cp /opt/Philter/policies/default.json /opt/Philter/policies/evaluation.json` -Now open `/opt/Phileas/policies/evaluation.json` in a text editor. (The content of `evaluation.json` will be similar to what's shown below but may have minor differences between different versions of Phileas.) +Now open `/opt/Philter/policies/evaluation.json` in a text editor. (The content of `evaluation.json` will be similar to what's shown below but may have minor differences between different versions of Philter.) ``` { @@ -69,13 +69,13 @@ The rest of the file contains the filters that are enabled in the default policy #### Disabling Filters We Do Not Need -If a filter is listed in the policy and you do not need the filter you have two options. You can either delete those lines from the policy and save the file, or you can set the filter's `enabled` property to false. Using the `enabled` property allows you to keep the filter configuration in the policy in case it is needed later but both options have the same effect. +If a filter is listed in the policy, and you do not need the filter you have two options. You can either delete those lines from the policy and save the file, or you can set the filter's `enabled` property to false. Using the `enabled` property allows you to keep the filter configuration in the policy in case it is needed later but both options have the same effect. #### Enabling Filters Not in the Default Policy -Let's say you want to redact bitcoin addresses. The bitcoin address filter is not in the default policy. To add the bitcoin address filter we will refer to Phileas' documentation on the bitcoin address filter, get the configuration, and copy it into the policy. +Let's say you want to redact bitcoin addresses. The bitcoin address filter is not in the default policy. To add the bitcoin address filter we will refer to Philter's documentation on the bitcoin address filter, get the configuration, and copy it into the policy. -From the [bitcoin address filter documentation](bitcoin-addresses.md) we see the configuration for the bitcoin address filter is: +From the [bitcoin address filter documentation](policies/filters/common_filters/bitcoin-addresses.md) we see the configuration for the bitcoin address filter is: ``` "bitcoinAddress": { @@ -126,25 +126,25 @@ The order of the filters in the policy does not matter and has no impact on perf Repeat these steps until you have added a filter for each of the types of sensitive information you want to redact. Typically, the default redaction `strategy` and `redactionFormat` values for each filter should be fine for evaluation. -When finished modifying the policy, save the file and close the text editor. Now restart Phileas for the policy changes to be loaded: +When finished modifying the policy, save the file and close the text editor. Now restart Philter for the policy changes to be loaded: ``` -sudo systemctl restart Phileas +sudo systemctl restart Philter ``` #### Submitting Text for Redaction -With our policy in place we can now send text to Phileas for redaction using that policy: +With our policy in place we can now send text to Philter for redaction using that policy: ``` -PhileasConfiguration phileasConfiguration = ConfigFactory.create(PhileasConfiguration.class); +PhilterConfiguration PhilterConfiguration = ConfigFactory.create(PhilterConfiguration.class); -FilterService filterService = new PhileasFilterService(phileasConfiguration); +FilterService filterService = new PhilterFilterService(PhilterConfiguration); FilterResponse response = filterService.filter(policies, context, documentId, body, MimeType.TEXT_PLAIN); ``` -The `explain` API [endpoint](filtering-api.md#explain) produces a detailed description of the redaction. The response will include a list of spans that contain the start and stop positions of redacted text and the type of sensitive information that was redacted. Using this information we can compare the redacted information to our annotated file to calculate precision and recall metrics. +The `explain` API [endpoint](api_and_sdks/api/filtering_api.md) produces a detailed description of the redaction. The response will include a list of spans that contain the start and stop positions of redacted text and the type of sensitive information that was redacted. Using this information we can compare the redacted information to our annotated file to calculate precision and recall metrics. #### Calculating Precision and Recall @@ -153,8 +153,8 @@ Now we can calculate the precision and recall metrics. * Precision is the number of true positives divided by the number true positives plus false positives. * Recall is the number of true positives divided by the number of false negatives plus true positives. -![Calculating the precision and recall](Images/precision.png) +![Calculating the precision and recall](img/precision.png) * The F-1 score is the harmonic mean of precision and recall. -![Calculating the F-1 score](Images/f1.png) +![Calculating the F-1 score](img/f1.png) diff --git a/docs/docs/howtos/apache_proxy.md b/docs/docs/howtos/apache_proxy.md new file mode 100644 index 0000000..f15d7d8 --- /dev/null +++ b/docs/docs/howtos/apache_proxy.md @@ -0,0 +1,58 @@ +--- +description: Describes how to configure an Apache reverse proxy in front of Philter. +--- + +# How to Use an Apache Reverse Proxy with Philter + +Running the Apache web server in front of Philter can have a few benefits. You can use Apache's authentication mechanisms to have greater control over who can access Philter's API, you can use SSL termination at Apache, use Apache's logs for access statistics, for example. + +When terminating the SSL at Apache, make sure that the Apache reverse proxy and Philter are running on the same host so unencrypted traffic is not being sent over the network. +To install and configure Apache on CentOS, RHEL and Amazon Linux follow the steps below. First, install the Apache: + +``` +sudo yum install httpd +``` + +Create the Philter configuration by creating a configuration file at `/etc/httpd/conf.d/philter.conf`: + +``` +<VirtualHost *:80> + + ProxyPreserveHost On + ServerName philter.mydomain.com + + LogLevel warn + ErrorLog logs/philter.mydomain.com-error_log + CustomLog logs/philter.mydomain.com-access_log combined + + <Location /> + ProxyPass http://localhost:8080/ + ProxyPassReverse http://localhost:8080/ + </Location> + +</VirtualHost> +``` + +Start Apache: + +``` +sudo systemctl start httpd +``` + +Make sure it started successfully: + +``` +sudo systemctl status httpd +``` + +Set the Apache service to start automatically: + +``` +sudo systemctl enable httpd +``` + +Verify you can access Philter through the reverse proxy: + +``` +curl http://philter.mydomain.com/api/status +``` diff --git a/docs/docs/howtos/evaluate_performance.md b/docs/docs/howtos/evaluate_performance.md new file mode 100644 index 0000000..1201ebf --- /dev/null +++ b/docs/docs/howtos/evaluate_performance.md @@ -0,0 +1,174 @@ +# How to Evaluate Philter's Performance + +A common question we receive is how well does Philter perform? Our answer to this question is probably less than satisfactory because it simply depends. What does it depend on? Philter's performance is heavily dependent upon your individual data. Sharing to compare metrics of Philter's performance between different customer datasets is like comparing apples and oranges. + +If your data is not exactly like another customer's data then the metrics will not be applicable to your data. In terms of the classic information retrieval metrics precision and recall, comparing these values between customers can give false impressions about Philter's performance, both good and bad. + +> This guide walks you through how to evaluate Philter's performance. If you are just getting started with Philter please see the Quick Starts instead. Then you can come back here to learn how to evaluate Philter's performance. + + +## Guide to Evaluating Performance + +We have created this guide to help guide you in evaluating Philter's performance on your data. The guide involves determining the types of sensitive information you want to redact, configuring those filters, optimizing the configuration, and then capturing the performance metrics. + +> We will gladly perform these steps for you and provide you a detailed Philter performance report generated from your data. Please contact us to start the process. +{style="note"} + +#### What You Need + +To evaluate Philter's performance you need: + +* A running instance of Philter. If you do not yet have a running instance of Philter you can [launch one](https://www.philterd.ai/philter). +* A list of the types of sensitive information you want to redact. +* A data set representative of the text you will be redacting using Philter. It's important the data set be representative so the evaluation results will transfer to the actual data redaction. +* The same data set but with annotated sensitive information. These annotations will be used to calculate the precision and recall metrics. + +#### Configuring Philter + +Before we can begin our evaluation we need to create a policy. A [policy](policies_README.md) is a file that defines the types of sensitive information that will be redacted and how it will be redacted. The policies are stored on the Philter instance under `/opt/philter/policies`. You can edit the policies directly there using a text editor or you can use Philter's [API](policies-api.md) to upload a policy. In this case we recommend just using a text editor on the Philter instance to create a policy. + +When using a text editor to create and edit a policy, be sure to save the policy often. Frequent saving can make editing a policy easier. + +We also recommend considering to place your policy directory under source control to have a history and change log of your policies. + +#### Creating a Policy + +Make a copy of the default policy and we will modify the copy for our needs. + +`cp /opt/philter/policies/default.json /opt/philter/policies/evaluation.json` + +Now open `/opt/philter/policies/evaluation.json` in a text editor. (The content of `evaluation.json` will be similar to what's shown below but may have minor differences between different versions of Philter.) + +``` +{ + "name": "default", + "identifiers": { + "emailAddress": { + "emailAddressFilterStrategies": [ + { + "strategy": "REDACT", + "redactionFormat": "{{{REDACTED-%t}}}" + } + ] + }, + "phoneNumber": { + "phoneNumberFilterStrategies": [ + { + "strategy": "REDACT", + "redactionFormat": "{{{REDACTED-%t}}}" + } + ] + } + } +} +``` + +The first thing we need to do is to set the name of the policy. Replace `default` with `evaluation` and save the file. + +#### Identifying the Filters You Need + +The rest of the file contains the filters that are enabled in the default policy. We need to make sure that each type of sensitive information that you want to redact is represented by a filter in this file. Look through the rest of the policy and determine which filters are listed that you do not need and also which filters you do need that are not listed. + +#### Disabling Filters We Do Not Need + +If a filter is listed in the policy and you do not need the filter you have two options. You can either delete those lines from the policy and save the file, or you can set the filter's `enabled` property to false. Using the `enabled` property allows you to keep the filter configuration in the policy in case it is needed later but both options have the same effect. + +#### Enabling Filters Not in the Default Policy + +Let's say you want to redact bitcoin addresses. The bitcoin address filter is not in the default policy. To add the bitcoin address filter we will refer to Philter's documentation on the bitcoin address filter, get the configuration, and copy it into the policy. + +From the [bitcoin address filter documentation](bitcoin-addresses.md) we see the configuration for the bitcoin address filter is: + +``` + "bitcoinAddress": { + "bitcoinAddressFilterStrategies": [ + { + "strategy": "REDACT", + "redactionFormat": "{{{REDACTED-%t}}}" + } + ] + } +``` + +We can copy this configuration and paste it into our policy: + +``` +{ + "name": "evaluation", + "identifiers": { + "bitcoinAddress": { + "bitcoinAddressFilterStrategies": [ + { + "strategy": "REDACT", + "redactionFormat": "{{{REDACTED-%t}}}" + } + ] + }, + "emailAddress": { + "emailAddressFilterStrategies": [ + { + "strategy": "REDACT", + "redactionFormat": "{{{REDACTED-%t}}}" + } + ] + }, + "phoneNumber": { + "phoneNumberFilterStrategies": [ + { + "strategy": "REDACT", + "redactionFormat": "{{{REDACTED-%t}}}" + } + ] + } + } +} +``` + +The order of the filters in the policy does not matter and has no impact on performance. We typically place the filters in the policy alphabetically just to improve readability. + +Repeat these steps until you have added a filter for each of the types of sensitive information you want to redact. Typically, the default redaction `strategy` and `redactionFormat` values for each filter should be fine for evaluation. + +When finished modifying the policy, save the file and close the text editor. Now restart Philter for the policy changes to be loaded: + +``` +sudo systemctl restart philter +``` + +#### Submitting Text for Redaction + +With our policy in place we can now send text to Philter for redaction using that policy: + +``` +curl -k -X POST "https://localhost:8080/api/filter?p=evaluation" -d @file.txt -H "Content-Type: text/plain" +``` + +In the command above, we are sending the file `file.txt` to Philter. The `?p=evaluation` tells Philter to apply the `evaluation` policy that we have been editing. Philter's response to this command will be the redacted contents of `file.txt` as defined in the policy. + +#### Comparing Documents + +With the original document `file.txt` and the redacted contents returned by Philter, we can now compare those files to begin evaluating Philter's performance. You can `diff` the text to find the redacted information or use some other method. + +A visual comparison provides a quick overview of how Philter is performing on your text but does not give us precision and recall metrics. To calculate these metrics we must compare the redacted document with an annotated file instead of the original file. The annotated file should have the same contents of the original file but with the sensitive information denoted or somehow marked. + +There are many industry-standard ways to annotate text and many tools to assist with text annotation. We recommend using a tool to help you annotate and compare instead of performing only a visual comparison which does not provide metric values. + +Let's resubmit the file to Philter but instead this time use the explain API `endpoint`: + +``` +curl -k -X POST "https://localhost:8080/api/explain?p=evaluation" -d @file.txt -H "Content-Type: text/plain" +``` + +The `explain` API [endpoint](filtering-api.md#explain) produces a detailed description of the redaction. The response will include a list of spans that contain the start and stop positions of redacted text and the type of sensitive information that was redacted. Using this information we can compare the redacted information to our annotated file to calculate precision and recall metrics. + +#### Calculating Precision and Recall + +Now we can calculate the precision and recall metrics. + +* Precision is the number of true positives divided by the number true positives plus false positives. +* Recall is the number of true positives divided by the number of false negatives plus true positives. + +![Calculating the precision and recall](../img/precision.png) + +* The F-1 score is the harmonic mean of precision and recall. + +![Calculating the F-1 score](../img/f1.png) diff --git a/docs/docs/howtos/signed_certificate.md b/docs/docs/howtos/signed_certificate.md new file mode 100644 index 0000000..f18359e --- /dev/null +++ b/docs/docs/howtos/signed_certificate.md @@ -0,0 +1,76 @@ +--- +description: Describes how to use a signed SSL certificate with Philter. +--- + +# How to Use a Signed SSL Certificate with Philter + +When Philter is deployed via the AWS Marketplace, Windows Azure Marketplace or other third-party cloud marketplace, SSL will already be enabled via a self-signed certificate. It is recommended you replace this self-signed certificate with a valid certificate issued to your organization by a trusted authority. The instructions for how to do this are described below. + +First, create a private key and a certificate signing request (CSR) for Philter on your domain. In this walkthrough we are using the domain `philter.yourdomain.com` as an example. + +``` +openssl req -new -newkey rsa:2048 -nodes -keyout philter_yourdomain_com.key -out philter_youdomain_com.csr +``` + +Submit the CSR to your SSL certificate vendor of choice and complete the SSL certificate ordering process. If prompted for a web server during the process, select Apache or Nginx. Once the process is complete and the certificate is issued you will receive a few files. The files you will need are summarized in the table below. The file names may vary and you may also receive other files as well. + +| File Name | Description | Creator | +| ---------------------------------- | ----------------------------------------------------------- | --------------------------- | +| `philter_yourdomain_com.csr` | Certificate signing request | Created by you | +| `philter_yourdomain_com.key` | Certificate private key | Created by you | +| `philter_yourdomain_com.ca-bundle` | Intermediate certificates provided by the issuing authority | Received from SSL authority | +| `philter_yourdomain_com.crt` | The SSL certificate for philter.yourdomain.com | Received from SSL authority | + +When prompted for a keystore password we will use `changeit`. It's recommended you use a more secure password. + +The first thing to do is to convert the certificate and the private key to PKCS12 format in `philter.p12`: + +``` +openssl pkcs12 -export -in philter_yourdomain_com.crt -inkey philter_yourdomain_com.key -name philter -out philter.p12 +``` + +Now import the P12 file into a keystore `philter.jks`: + +``` +keytool -importkeystore -deststorepass changeit -destkeystore philter.jks -srckeystore philter.p12 -srcstoretype PKCS12 +``` + +Add the intermediate certificate provided by the issuing authority to the keystore: + +``` +keytool -import -alias intermediate -trustcacerts -file philter_yourdomain.com.ca-bundle -keystore philter.jks +``` + +Update Philter's settings in `application.properties`: + +``` +# SSL certificate settings +server.ssl.key-store-type=JKS +server.ssl.key-store=/path/to/philter.jks +server.ssl.key-store-password=changeit +server.ssl.key-alias=philter +``` + +Restart Philter: + +``` +sudo systemctl restart philter +``` + +Execute an API status request to verify Philter is running as expected. With the `-v` option we can see the details of the SSL certificate: + +``` +curl -v https://philter.yourdomain.com:8080/api/status +``` + +Look in the response for details of the certificate. Our domain was `philter.mtnfog.dev`: + +``` +* Server certificate: +* subject: CN=philter.mtnfog.dev +* start date: Apr 21 00:00:00 2020 GMT +* expire date: Apr 21 23:59:59 2021 GMT +* subjectAltName: host "philter.mtnfog.dev" matched cert's "philter.mtnfog.dev" +* issuer: C=GB; ST=Greater Manchester; L=Salford; O=Sectigo Limited; CN=Sectigo RSA Domain Validation Secure Server CA +* SSL certificate verify ok. +``` diff --git a/docs/docs/images/ambiguous-span-example-context.png b/docs/docs/img/ambiguous-span-example-context.png similarity index 100% rename from docs/docs/images/ambiguous-span-example-context.png rename to docs/docs/img/ambiguous-span-example-context.png diff --git a/docs/docs/images/ambiguous-span-example.png b/docs/docs/img/ambiguous-span-example.png similarity index 100% rename from docs/docs/images/ambiguous-span-example.png rename to docs/docs/img/ambiguous-span-example.png diff --git a/docs/docs/img/cloudwatchmetrics.png b/docs/docs/img/cloudwatchmetrics.png new file mode 100644 index 0000000000000000000000000000000000000000..2150654d08a86be00d1d61cc929987becf38adc8 GIT binary patch literal 72519 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�VRxOZei8umLq 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 SAw}otpMkEi&gTbDqW%LvxLl?H literal 0 HcmV?d00001 diff --git a/docs/docs/img/datadog1.png b/docs/docs/img/datadog1.png new file mode 100644 index 0000000000000000000000000000000000000000..dffd97536af3ebb84033231664fcc5e786997ea9 GIT binary patch literal 52201 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 literal 0 HcmV?d00001 diff --git a/docs/docs/img/datadog2.png b/docs/docs/img/datadog2.png new file mode 100644 index 0000000000000000000000000000000000000000..884abe7739ad2c699de12c2aa1dd5b1c434cb6e1 GIT binary patch literal 28758 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 H>*0R^J}?<a literal 0 HcmV?d00001 diff --git a/docs/docs/images/f1.png b/docs/docs/img/f1.png similarity index 100% rename from docs/docs/images/f1.png rename to docs/docs/img/f1.png diff --git a/docs/docs/img/google-cloud-marketplace-1.webp b/docs/docs/img/google-cloud-marketplace-1.webp new file mode 100644 index 0000000000000000000000000000000000000000..e7237c60d18a27604dcd1d69890322d15ec110a6 GIT binary patch literal 39836 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 It^)x717!a#OaK4? literal 0 HcmV?d00001 diff --git a/docs/docs/img/http-action.png b/docs/docs/img/http-action.png new file mode 100644 index 0000000000000000000000000000000000000000..eb8a987bd785ce5a89ec312f632b7199e6169391 GIT binary patch literal 24166 zcmbrmbyQqWw=D|65;VAbaCesk_XG&;8iF+5xCDYraEAn!;K8MFcXxMdw4u@0`F-b{ z@$NV7J?Gu=_CMX5qIRvdckMOjS~aV~KdQ=Mppu}%!NFlD$V;ok!My^&!NL2!Muz=G zy(9KJ>;uu|gM#L3*x~cqA`Es;>?)(<ssXTa1)4fr!dW{2>@C?`%$+SQ9bCQuT)_w+ zaX2_CI0fnVnjV=at3ZR#y9oUk<8B>DnjLsDD%dKLE<YJly?0AzhRAf2(W<))3U=j{ zM!B__x0r_wbZsCm$q0OeF|00$uN+1Z)i+)ZJw3tGP*Jh7YlFb^!zn8~*;kp}LMve3 zF_&yx&NO8!X=#cNhRv?<CKp@11Qp?715XL#Q}}POoAifMI2h>Z_bTRN!^2IXm%F#s zvNSYU*<Bf7It4#}Qnf#viHJX*cekKAa&d9_+--*X+^zx<k&wg!NFu^SiBJJFX0tRj zG-rYxtFIlfv9aMaD-59TKdVXav}<_aVwd5)eJj}=f)OZ!=13f*zuxX^GgCZ?P+kTz zA^)77M(bD=A@f^Cm?%2lnsiU;E^h}@WB5S#hfNjf-)pC@{%KN1C)rn#rXYC#{(W$8 zFx<xq1EH?&Zg@u*7Y#?;xX=)ot)iM!$bz*((D95;6F9sT>7C7w9sl^3^Xk<rxYuvq zC}7zC+@Pny!n*N<bx~ascl_s+u&y<HK<ZEy&0u#Z2_M$)m$SC-8YacU3)K<KE1JuJ zQmt+gx#3l};pHt~z{+VU0oU(iU~<K`u&^-s!milN@r#<HD|*<!n#sUCfE~ZXVD`Wc z{7*3Vv9YUZV7CZ%Xi39dl9uj?U~CPCwd!Dh7l5^5v*f~V!vDK-FDSMB+8qCjP8*91 zT1xJR5@9$piIxnW7c#n?TRMaG_^Zmux3G?$3%abWi;IF2?az{5z5l3X5qP=M!HH9x z7Jn?o#3%!O7yua8Zp||#mlpmtHQOxi+{$`e669XXWH^#Ak;ejkP-cXUU}k@?GGpmZ z35}DTZJDgPXGvr~>x@c*PcAO~kAC6+!;I)cS1z?=JF?E)X!By7rO;J5f5j}&ZUdlL zul>!{9J<wR{Tofj&!Lz%$U3>DfBp4TtO#w0DERuZxBSiVEn@Y<!B@BwyU6_GW%s@H zZ9F!0k^nXk2krHNB8ld)>|sCij=P%->;_#X8ejpUOM$ePL%Jt+Xw!9v@+4ZmZ}OrM z-1#v}h8GqEH#7&5LOvVkO0~iF^cpMZ-tMkcRQzLW{ITy^X(ONMap(8PDqn86=+gFJ zc!cOuH-!cRpDz5EoK>X(@GxBQ$7cS|Ljv%9q7(PKJd~zhPbsPQN6azzDM|w1`%>yg z2xx4cp)X;gfI@8kF++x_;Glhz=Ms3>_oy__W8Bk(QQKXpQR<JIt@}34Dg*;!+4g0^ z{59@+g<SYUjW*2r%c_CdbN4*AQ&}aFjx_&RC+LunAJ%%h!=l!^b@8^%lLFdAuMt}9 zBTsMsKbbY(Cf*EIn)#EccH3Z%JUTJDMIm<}%Mr?<lL|~@alRd|0Jcnlmq_hielyj> z;q@UQpup=zSuJ1B3Brfmy$H5>Gf`q5%V=yXV&0Tnq#5F2W5<ay0lPEoP2t#$g}nQZ zjh;C?$wf#}ws6eOY}?L4RKmFvRiHxk9@w11A6uukOQzu%^+RZwBtk?80&IIdTkVLW zh|zcmIt!$oGT|6iFKWPCU&r0`d_dpN+mjr<e~A2j#9DOP53Q>njK4k{>KzuQuqXRQ zre{SX6sRW;qII$f5ZPn=^PUXQcAF?}9kbCFKD)6+(v6TkiUk6J^p4l*Leq50FGkx5 z##_2xT!)>X@zAb4MV#ER)RF;;p<deXoJ$0X&+gxOyr<Z-3w&@#QaxFBOQsoy1$KKD z#TpWCP2RnQI+z=*jaq0;Vq*CmYh(G1?@+3m92^#D!QQSogDUUH@b@UAKP281i9-*K z7=39YHoN%JD^(CpKEWdt`Jh@cc8<)K;ih`5p_^KLz2?6BDeS%L<+1F$BPT5I^kco7 z|KfHL0guffo}!$=6rlgE4(V*9AWzy*Om3i)u7|GYV}Bk7?4?`q-RU<dEx_o#AGO%E zC8p51gPN15`oLxA->`pHT2YR;z$=^@-hO@fu!FFW3Y)AJniZPjf*#}%JKa~w&nf}t z;(CkSOFCa(boK<;#S8<kB*T5Mt^>PQumEz}(^XyqMgXz2*ml2=VeK*Vh?m&)?uJ6~ zKPIp@`tvRQUpwxrQU8=l1lPV$sE`w~3m9-{2Qn~Qz6Qu;1+ZpQv=L&U)OvZ@k_GOB zl1FTRnX%V^-Jg{$_1S?zhLO~$kVNr=!?b89bZI^NYJMb<(~4jXo%f4Pzwyn;0>Kc_ z_671VK(k)O=|3uoPDFG)g`+5;6}T$rmmedSF#~lIUAlY-SJ8B{l>|XtxJ*ngIA~cv z&8}>wK2k|7)>ty?&&hPc!e7s;C|$$`(h(%|zaQv=;u{;t1osZpFsFFTWz?E^AAY>& zVB5Z1Tooi_?*_eO!EYQ2!)La+2BQ`nIYQR+Sf4GWn@y$u##xHb1aAO8L_?N)EDcMx zCqt6!5FFVJA_SJk)v}ELI1+0)WOO7azW4eYR1neW6PT{{4QrjwJNyX1-rMb3J!5@= z)nZa`9{xt%5903zsw&o3=P&<W_$=j|cE9AGu&?)fmo2X`m}n0CM)67aZ=-`{^|{s` zM}<tZB&y3Jq!8ePakHn|Jmv;$Mm|=ZYDDpW7kmJ(qq_cmL39pmGy;Sv#?NIRpfeX9 z^uw0IGn8GVr~4Ys3%E@>Jg_hx*E(#*21u#Q{5z#fUaVdBrY2`{rv2jDV3TAZZ^UfV z{&sS<B<O7I?q$@yR?y{;QNk|AuH@@q5ZSTu+zUhsIAnRyYexM$pl5pT{Xg(Bko6aQ z|L@V~-=GWlbfc5-3bHot1sg3)w5CfaXWMf2@_$9Ff9vz#!=3Yd&~?O0<i>`HlJ<LP z7)iLgz4hN%{^)@lIT(#=AT9l_VMnVw*dZeVHsJpeB>!W`!KZVAhGZ5F|KXdcX{?a~ z?fJ7P)TT_+K80kA6WP#DFSM8ZGB3a{C=a<Ka6NWJQuBu`;PML7NDuGxl+4Bk^?x3B zh5-g(-a4x5&%Iih$j}XOUSl&G`|9Jj7>L2^H!74<UG>!>6`V2veJ@ryzsKwerM(Az zo4=1v^qqFMe!I2sM=A@J`MI;coh8iW(mvO#%9P8k!2!dQsCMFxt`C?W^UY-J)QhCA z`g7HY$lgktm{4^W0=8UVWg0=5Tw*d!=l@VEFM1>KAPwd?Cg0$$=lM%=7*UEw=V*M( zI$RK@$2wMn^#LHoP<`qDo>*fpRR4uF5Izu{3_^Y7Ze@pr7a8^tzHfhN&P$^4f`8*M zsDC_GsC)2gnf^AvB$P!}mKI6LYvcC*9lrr*k^bKP1&8|lXi_|#l6r1FN}czJb>$#B zs68^pUK|}+D#TwF9id?#LJ<iIQcT+28J)cybqRFU4}WMB80;B0zQ_x_q<1FV8)@HJ z_V*?-^)LEWak}}S7O~@ko|FpDTz)<Dq$y`WsL7RCpsuSnLw}B?(B`*h&>s^UZ1MXf zY4$)^=3bt78bO6zjVD|Ll|sm5`z_<z&ZoVflr#9FnZW!TE3GDT(izltNVWBgms|ZB zX}o@K>vCgUxVYvqV=cPvjB_sJ%(>E(Q<XoFk?Ds2V6Wsk{ze>T<-OtZ=Z;yzuzjgt zC?P!c$@t1@iYD7(H3#Ej5dLf(`us;{cP!P=TFC!dln~Qj>2{iO<7%z)d<GG-pTU$r zBRp*$b7^F^W-)5fu1mBeTjtgfHX+MbPOq#OmD}HgO?}MYLOw@ZxChmK=stRPw$LdP zV7|PttDYm=>!8UK*e&whQ|)P6Dog|?cf@<U@$~@kn4qA0u}d;BG)qv`U!IHRG&%XU zK4s!qZR(HKW%R;hfv?SmSNep+b~y9_pqg~mJw6Gyppj>aPlhTUuuXM4AfJXQbztZu zq2%8CVZk}X-`?UbLiZZt){9x?R4&!PL3rUANO!IGW5xF3F)m?aK8Ao!U7S}?dwbNf zMTn~=dDk5l0MB$!It!v+o;fdof3!sVQ`Gi`C2}c0mQ!S|U;t!+c1IGJiG78-y~+Z9 zZR);9hKn)-O&&4d$-0^<)Y6|F!h3q?ot>a4h=_>qUeMNt>v|X~tkkvMqhw?>=mUbQ z76frnm$rX2Cz8iN=EI_+>FD|6USVPi%vY<mWbQCoX&l8Wi11f6UAnk3rEErVYv#J` zGiMsKBnWoYcJs`nt_Nv#?_GfqOb2~gvJ}<Vn4V6(VX=!nuD`y<!2nK-V4t_6*X1!I z@cPk%?%4n37E>x`cee@5&!-Vn<a5d6sq|VKQ)If;mil!IR|6HMDiV_sfHjA2`0jPL z5M;*!K^3y_?paFtDEK8ThAp72O$=!p&6$ll1W_K-adNW91V{-{JmbJE()JmfnRX*S zvsIe`PHyZ3yU;5&3k!X4#fy_HX*Peoc>S)n&}VP~610GO`e79E1hrFyyWv^sBE-f% z{&e3vo=Pb3BRdCaB8X}ac+tf_T%hr7c}FUd0<Y(h{cMpnLtuB%X>EwNH1aeVyr|m@ z&v!cAUb3|Dxs3Z0HFc&uocu=D9!DyHGYK3DjzW~mK>PU=-^Jhy3h6DqM3keL9icu) zQjvqDekP07&z^M=4T{t-E8qaN*~~th8fTA#d1|Qd5CR&Vr}Kz{krA2nEe>*KCK)wz zL~Yt{AUiXOVxlsJ`}a0uvw?53k0ca>pohH)5&ke_!+q;!7=zY9(`RlK4fjMSb=<2x z(c9ogZaDd1w3fusO<G{9zJ4JbJ72E)3%%CvxUCN^)_jDFOwvTsUluSdm-V$Eu)o-# zoY7yIv;zf{IaYX%>PoQ?^J-WQmxyR!dHPnpURy0)gyiQG58|DX<;73GR=zLHpqAMk zrwx9mkIwJ=PzZ7%l{-PQ1#kn}4M@>gY~~k}`RKM;7NZdoB`ZT%BDq5K?rh$94v;^r z>h08RA?`niHVw&!dVOJ$7-iEP{%rHL16-;y{Z-cUa+^!2?vBw&Iv>kET7Lz11JLeE zHlCkYB+}N%@>;2RVIRxhqR4o<`KXo4<08Ty;NdRyg2HT#B*lV1BX2~)&6Q``GDL`% zo5`}y@v3x9+)8+aFGoQ`Z=}`TYH5VexV^;?hOUv^X)i_#<158lv@Y{9{^=^Zsx2>P z2W@OYt0KT1!O-2&WPvylv;4I`l#BOY-xGlJaIN#OQNSs8@79m)R(S*O`*s)-mXRxW zj=Ll#hie&CRaNnvywhWGTB>d$DH3b0*<l>OH@+RIVtz~P5mNQ1v4AsGxlrU;@mmlI zL}Pg#{C-A`0=u)b^X}n6znKJ<cuXj^t1Q`GvOnj&&2D<Ta<<!MKVFfgS+<##XL+?U zUHF$J+_E<zIj~c5(Hd*_Ng%R02>g?h4oD3pqjLBUyi?NN7T3u6-)E=)J=TB86sS)9 zPiXHsf?ZbTpse~YrHc9g2I&8uGH=7K@Fl<qmhBSl_6ZiE0?fEbinU?fkG^S^^Vjk} z-uzFAweyS3bYq>tp&QZzKsa9F^jb{g@KH*LKE_rpjW+>H<;vO}immKh&q*rVI!M@G zSv1B&_@}5?pDi0a8DzC<7r5;MozpbCSJ}ki*j4|VdEf1P^=J_{#|x(;r)Ez+=8?tL z_GSEjw7mNM4N~#l99iECA3aDpY-{1NB<jgWXqTZq>H(po4n}C?*W$`XHK5stl7T<U z4fI<`6KqB7%1FTFlB5jGe3g;M1+|%qjS_B&q6g>JniXUNb0d4b<l7JU58((@>4r*k z&Rc#C5A#5#t49IpS3OT7wnn}SWObSU3I4>*ektmqXm+G8G;4GxRc_1*-`Nuu2<*r5 zH_#p*&v-nNTnptDu(G`XeAd$^(_LpbjNqMMDNkb~opWo&MPlhQE3YEGMqy$m^{Jp{ z@Kd~AUtPEHboV?tLmswBrR=p)nzJT9q<7XtSp&$Bo$0%moa^s7E4KPf9F2@#*XMj7 z3w_w1nBC?=NAMrKUyyOwop!G~cfHEbw8ltRSxEIEgYVM1kj+C)ban0;Y$2xvH~U;Q zUIQW<GDx!>vPBo&=)G0;$jDQ+6Vg9AKrVhCCuBX*UX(&He+d{BJ+9@2?WKsjF&=8h zsM`AH%Z1A-$H*&!d=|XgRm(wP13@Weo1+_M8%u-n3%+`B`3d}Zj=U@Sfp0#M>EU*z zIVY8vxcDD2YV8etK=!G_!VQ2@8T(bGN}QQr^b3G#N<N!s!n^;r4g%7C?UivUQC8D} zkqq_cG{Uw3^0zI;5-RO%y{SRfJvnHm3m}azoTlq+yU!x)Idh~dX^>^hXA#kqW>Bj_ z1LX_S#>CE9Yy3ij@t7QTtrKTGZ3{P~As?MCb>Z0oh`dWV0J)-nUcJEH1s(P-Q&*da z4-}8(-IeV#kEJPRrXLPhv?JVcFDa`hhF=-BQ*+myeR`ZMx@Nnvh0KP}`0}LXE|4w+ zpk^&;AZ^UY&73wwU-GTg2szW&gO)?Fn0>lp&S|Aj?lMWPye^0Ci8kK3v|yRcqpjl* z;P+lQ?cUwr{IUxZz=iq52AMJ6jB|_$2AFo$mE1)wrUY#}2a?-v+idGUtNOJGc!K(4 zqRr10JUzE>&n(0TfXA1Uw%SBW`eJeulS$WXDbM43X?zJp)hw5D+%nP>KUPkO{#U*< zM-kU%`zSV?bGF(t-R2E!Zs$)G+RxdDZdl4cW?;agM4*Sn`eOss1R_#y3-+69-$HQ# zuGyV~uwiY*GOJI$tL_dI@4bLDf;2JUY!;aW(}csx(l>6l9_sbSKA33%jX@))npkQA zYAY)%4)tfLx17axp3UHP;@AB4sz2puwc#*NSE60E`|x5SX!-`3geEK<SIbx;K}4gq zbm%79;rk-mf#>JwY}WLczn`MjeIKTCgW)qt&wu&z@v|)|i}vf(zDw6$_rn0ver%@= zTIyVI3k57{U0_n4Pw!MTlKwJ*T6-=E#7S+&nK<V5R(Y}>XdsFF)Y-N!0k{N$#xuBN zWCF8rfm6DHRe*z*U&!yDSQtR;H{8Y!dXlk6-vPSU{v1i27YS05yrHqu>Q}PoZWSui zB;hA$vEN)s?;zkJqC;>r`MJ(<CnDbc_r;d@*J!bDAX!bWSBV{!Nrb_n>(7nSXPZU- z**nl9=!U^-aKrELj0}d|mC|X8qsl=xzrCEpPr29t|CLy+Xi|;tT4a^N=k&*xMTwYZ z6}iGct#mJI54?&drY&#;hJqa@?tE`_9%$hyPE+xnc;uHINIH4)8XT<*NQc@|R!}|f zLpymdSk;8o)R+a{Sm*{5b6%{vIEeDNGODbs91uCzf-AxXvW8aAtz7#HpSLA#?9xAv zO!nbUw=qlhws*4XR0SZRiSO;A)-OOsBaN%Q?K%@g$M;SM_?!H@o@qD9i1o9f<^(QX zP-3ene}bcEi~aOi5C1tvAHy8;x#xnr6dt(wh1TVeO<RHL?GCRsA+d;*<Sc5N(RW_P zr=5N0w85cZv!U%}9jHDT5%c7J8HY!a`VbVaDe3de-NY0vrDHs~E$)}~0el(`XFg}b zZ4&K5i^2Ft-V27iFRXCi+j6#hj|9wCk@zdb-Y@p?aR(RZx1bSaWl}vdn(if>wA~51 z4X=t8t$uCn1Z)z||5QI#9o)pCa=<F{XORs(s*uzr0XoDlp<LewV%Rwq%hC!U#C@6+ zq`VL2=Nr<fv2b=AeXKvjp!Xx@OR_~+EBJ0dRKFss-ZfkP6)U43n6(m!Gh@FySWm|i z57?D;*!7nip6H&(?~1u-$zZ^DNDM{WU5&pJ6Ga_w#$aslWFpNS?NFHeeV0*M{?)`g zW82yH1v%NPE?>L~=wsaX`R>Qlrd-$pUYOGir<LqG`1*x3skD1zHNS<{G=z+hZBakC zgjlODv&zsmfh$I}hNSndY@5SXZV#`&+V~GY_X$9M9A*u5dzXb1&7*hiT_|=?WE;T> z1GI7r6I|a^pY~iZIZ3wf)*T4xDc)=^hd=>LO49F&F2`uoVpQ=Wg_SIt+ig?s_Hz)) z$jNzhJCo)(JY05L=uRS=uJ}c(*~4W>Co46a$vj8OaE#)xSC%wb@?IsL&M?#UBo?@p z^+R3uu}4&65``~l(dNnbewQGQGO(IORf=td$!+&(Iw@klo(I}($bpjw8>VO)YK{~Y zf4D$?eIC|weX}+Oy^_<Nrip4d6mMKKMh*A^iSb5yDGU7VSJ%bHS2kISX>F}y*^R^l zgTTGt(Qg6tYk1$8*21_{1fBUwsM(pX`~W{z2!Ct9u^6RxKFsnMOqrG)JT1j)W<7GT z*<lb3&u>HNvpoDyb223!X#vJr%0Z^2wd^7%q_W@(bLArS2BEn@gI4{iRs(0va_$X{ zHIW&@hIog@W_OGCwbkgQ*;vZ->?F}Puk4+3nguoRpc&|9+2aJl$&BG;8gxcYOGz9? z&L|qL_5HgY5m_@fvqU04=l=NisC>;>+1l62NZ)05KKU@D=&m-=py3=zS%KlvzNFCp z!uGUQ^w75cYeA)K;Zc+FUP}$rtDvRz!-KCxjX1?mDx{@`yyQ=m{4zUhJ6Y#iC2uey zPxd1V9-2}mFB9@vtZN_FN&b|4W}N<fIeQ?V5|5Hv%ghQqW^Q61{L;E;WI4h*VqFoO zpm8)VTSW5~U*@?GcY(WtLawh(ax{Loc-8!QRQ1A!OvgK5sr<1Dp#uE62^w-X8&^^r zGCA2z?3h0n06cKELOZ5$SaW!yJ15o)uD5==ed4w+@cP})JI5<Hrr*9>varV!pUz7K z$|F~mWr(V$S1!yLmQ7dIT|bIi8ST*`Pd(q!d?wQ7SmmC_950YMuI}-zNvC6rqz5!~ z%Z-q)2YJz*b~KT+g@~&)jk53{j%UQYRQ)I~Z&|l<8?HuU1+N9|a{S)yf;x`Lgm6;N z<nSA3!RKKUCNQa(@S1YdnOM7Sjf|YRw(g8WiqSG7n>+Y(>h7-fNBw2{f5%2biAaHq z7Y2Dd1mk5Q?N%l&&391fruOaU_VC6gI-ZzB1u;6ZYNa>PHU&>@>m>ulU+nlXyOu{W z1Ox<DT2XMng%9s1j8~%C!019;OA@e))Y9{CRnmvUXBedo2Aa2=R?lZ$N?=IuICYr- zrrc566j4hKVa;B=-ujLfVXi|vmz<1DPy((=zF8<R6|}217Fyo*a_#YGW$hu$NB7qC zLIo31Wd2OiS4vILKhZcg|MaKBtDv}@`s6Q=_USlnjvKn`2fxKXHHkl=GcQi>L^DA^ z)`E;}%L;F;A~MU8&k#Hj8i(xhO_VMs_0`iknk`K3w$)?SvwOalem<pj6b?IT@)p+o zrEjyW4xY8MCm`CEyDOi2+g*@rxrt4d#dL(mAN$X=k-h^VP@oo|dVf}RZSbb1Og0n} zTkCQK&uE<V)fDB9R=j{>FM$k`<AWg<g2+5YzQ?{QQ{a4@*D0xn!@lq{r-h5b7}(0! zj9f2y7-cUg3M`&&E|ya3vajlXb{CN{yt*QSFqx?;Mwc5NrPwv*!SivK;R*btDkLHl zKVgL&+THy|4SEZ1azke<n&ZcA^1uA(fsk1?WpgfQ#jexw4e7ly@fwTexgngKp3hzH zDA$?;<9d>Ui`-OmDtvK=ZI0SBTw5#-tqC_BP+ow9vq#27s19qMPnBIa?fyqsI(|{{ zY9n&Lb$#9#0~7gd*6`-8RczZJqO^<al@+E;+UBE{7X93>_li_HZN1@R(ee6~m*9+^ zNc%@9GYw|g-p7f3R(HVQ^zNmT@3wsQ>RiOl6@VPbd2#MV;P8ePGfekX4a(0Gf9&pn zA5@f`=Y893QY;+`VfVSYAk5_KtgHGS^)#8>u;dBv_;p&{@16~Z)9H&Q<=RbJAOA}_ zao4=Uo;#)5bt;(XRG)V>6SQ|*pctFR)W1W7Ch;6N(05uK|I6=(sQ-5L6mPkot#RdV zgB4Ir4((Pz%?v9r+49&S5g4yxtM;)tgtW2#r~d3y)N56Wt=)Be+%&&BA+a)%?Y+IO zYJ6Lb5K%6tFD|dKcgwbA=lbcarjh+1ElwFc>BV<6qMLD#KL$Z8dsV_T@sTCn(T_6c zQ{;ngs1M=b7|)5$+r7zQfA&$ZSZLIO<Ef7`%^$!eYqYyhlCwj{?9=q2(1!QeZX+*t z+_J_H_VL~mx}j=pPpvZ*NN|3ycgg=!7DGbzF&Po>XLV&@b$RQ>wO5P{e*bx|QtYQ+ z-5G!Gc2!zeRvcZfc4w7Vp*jARoRsE}vdXJLE}rTP{;DTgs@Lm7^r1yIX_t<Y&-^)6 zzkxUjzDk=rJMS|-Q?TlY1~7N*ae($$Vz_3U6?u?XG`0m19~;c+D}8FPaW^I`-cl00 ze6ym<Vtk&Fd%Ruq`R0=#rT!hh7TSF7lb+<-ReiX>pmv9;SjPFET7Yl2V(}caLGOb+ zJXdu&U&bC`X<ybN!Tz7^QH&K#)3Q|1F(;^9Q+U<G0mHvlwR{pSRl^5+JkhmlvJPoG z0)x(VMPtFTm=f+2cBYDBu4{;huQ!6N2`@>><ugI*3cqE`pqkzp@p=MbayFb4-90;z z+!G+XcX$+6prI&D&k9fEK@(nag3SYG+;2YmQdKpP5_fbtQlhYZQnGxqHqFJCUS(DE z!u4vWw|rJtxE7_LMv%Q*3}>OqT_Rc!N~b;cF~d)arMe_bWcG>V>Zq4p8LSa*{M2%; zB8_9!QhLo^^Ml{dsF4qv*mz6N!>RHya<TP!5B7vbMMPDi)9ksfb)+qz*{qq@h)Q}| zeWRlou@t0?)9qXpz>nEs1E)mFh04MYD}9{^4<)C^w^T>8v0<=s!{gHv<pzPW&uym2 zcFU8@ff6Q`qlg*bi2mU|e<s5Rey$Bny*X)V=Od%FWyr~rLLJGPke-%*=ilo8f34OJ z&T<qI4vNVd-CeM9=rohW1BpmDdCVdUY^iCS$7lZgH4iV7_pJ1Sf(uihVN3JX!mv68 zHkSL}x<y=Q%Ky*G2YmE{rvTnskC|)dP#(LWpw4`t=+yQ5=d*+QlD~^G|AWjR4p!j3 zXi1&$MP%Vfn^uW25DSUHt&ejA)#KKOHK6zphCh7HhFxZdd3q^MRKkOfVGGc(qcDel zBAatV=#r=B`AzSytl`}_S3T-a;1uCCNw#5t$Y6S4pier8Rw~DRaP&x5lL8$u`B;5` zi;RN!7FO`9I?NEvntEp~48g@kM#6bZ6yU!>v_}!8tjmyW9@&RO^md@bl#&~;zq_1b z{hYN3Z=MSBcm;rD$jd9E%W3-!{p^r@h49K_yN$|E$XfO?{>z6TugRHi{Jcqd`1vDV z)YS2{VsEIJOs(zUlDBO^v`F7A3j{YsVG%8dJ*3m5@g}Ex8d2u>F<!*2a^IHz_~oA6 zGW#WD;I~$14{$uG%UV~to-QYC22~1VeAaA5)8JfilTQ_5Fiz9aE0>ShFrW5dBeKG# zE;l^jvdQN6kfOZ0|KT>ACyoD9N;p;P^00ZjL&z@^6u;n3`IeV0%qEL$ksm-O2iK*= zX`8{u;U}7;u#NJG<w%ea7octQ9(@n@(XX71a-2-LJNT5<z*?#QLL-d;uSZUeaH9iY znk<a&jE3vIZliFz_{J6bmGV;|BRe2dw!e1!!qaqb6_l2Sb-9ZY3Eeg-b+@2KXkQ9F zOeT(T)%Sl>yBH;8BY?o-d3jWEJXmQyhr98mF{OMc@4#q$UU^QU-IGwEoMhW4_A|>W z;7tkx46W6rxrhEbT4km4BFEhrh}4zQ>GKU73MtgCG%9&n)Af31>F_EP_!w?}HK*yu z2^TYCbJjUKvECTQ!V#U;`G67m%H$!K(9)b88>#2<NuX#5y1D-a?xbY03KbKnmIF+Q zkjnH;dvyr!72|>YCl^G}*<->qmsKX|t<}dexl`AH?lCs&o)f_}<4d|WUqddl{4j0W zHG@lXiB@%DS~v!1lfV8~53jAmLxsA3Dp>SQyB*PUxZe)u+xb+!dVG3@rk(J}R8<+O z5l|W`7=u+uBILgftop2#P{8U)9v=5o{CD#^1mRD#B?baNguw0vZsroAqP~YsXROlC zJ)~LIj?UXeK1<3pyhRVVO_`W<`rOA|qjL>yfqb0kD`RO2<&0CihHJ+&>GXa^iIvNt zme@?gmY*d&5i>_Fpk6-eO6cSM-MVn>Rp*Bc#kge7$M*&%(|d?syw0P~txA?#cZ6*v z$GQ}10s=z<7ixxkBO_yY<acPgh5&DsuQtgoN#Y&fjTLZL#J#S+k?L$5SC54B+X!D9 zF5$N<9yz)VTcZoU`XR4uM?;w6FWE6f>Vn&}XAoTW&gA)qwA}z0#Rz96<W`Oj$5kDU z=jhn6*T)Qj2>$qC@5u#+j1nQ7Ka=-^!*^X_qXi7wobDxT+S`*W%C4N4n1ytbqYqXe zKQz=7eqiYHu()eA)sBW#(!Jb)AF2N=Xv9t+NPHT;qXb>s$Olc%hG%GE<#EN->BkGU zdtsdInJZu04-Nb{d&Cosuaug<>U*yAz{FjCaAlY<rLpc>R%do*0q~v;F0X~^d|bd@ zeo}(&Zj=8``<R#yHl}?ErfUT`QStOi43BtXynZqs&ulOfZ1}04)roH4`K{fT8CH{9 z2ZZm>3b|3^RoK1hHh=lrmlU=?ArkHBeEl^$V?C-3Z1o8w>{)?rc-B(mI(!Hf-f$5& zoXQS7*5d)+%Oe}2ndJFPm5Qdg`%*cxls#XVR>_Iq(H&p0&o=G03T+T^Jh^AW@8T@1 z^{3qDX<wZ@)*pUNU%cUG&KHpoJN;26r%XXV2p<y&-wLtAdsBx}b)M(mD3J@8B)D^! z{w63Sw7KKT)0&1xpq#b8q4{I$rtea>Huq4wr7=4WO>OgP6Ge3YYsTY!ThO2_KI=eT zFcA)wP=|~hZjd2lH!b!@oFNq1m2@V+LE6P`60gtah6Q8Y-WlX>aQ5CulUGnkoq3o} z`NW_ltEMtKFPW<;sZMvlZvkVmm-+}E$;p0Q9EzL%i`9s3bVLmBt<)w0#uaY$e}Ze~ z2A7>2BtgkBqD^KJXhwlO>d^;_j8M@b?RI9P{ca%yAhcvWPOFk{tM`yaXwsVM3?=zW z$_(w>@lMdkj!JTlBu+Tl(m$8Ip63LZ+wpEsM>EZ3dSUp(XFlZ`k?@@ymovwP9&um1 zI9}%}(#sgER|itI<(R*5B<2<aW5&_9Ho2RRLJ2!lu{hNmstJ8u#1q&NbPWKEt%Fad ze_WARSz~<-8am6gEOS465R8NS(eZuMn3HXXx5r>BLWOHc)C#S~`DC9wvpre<!*AmK z2z<tiTUB@2jKDAMp=31l7yP@HKV0pI!76$=myW@-1w%rn38|^J-t3FDZq7Z9;xxPb zAFZ~+qncIUFcf7ZWRf#cx{2Ss|3=fto6^En`)oBSoh3FXaJu5;;?g}j8eMPvT}sng z9}qw3afKyI;4d^bVkb8kPsgNN^KRCfa@;+KOb?hp{HuU9Mt<uqJx6Gz9T&r41XjCd zAN6aL%?N8&dD{7u@C5y_-a^<Gd188MUO7?ewda3?^;=BxRLf6byiR$nW%zJTa8NDJ zYoccyOF}~8D0(s8^3=h<Eqo>1<u@@=M-kL`fA}+6jbGR%wrOB;!^z^DcQib9=ie2! z4>SfWr~PGsWaOeE&rX+DF83&A+O2qN9Ip9S>pVJ~Hhi&I{vmMdgUXaMu>f+zlF4HF zSjy1glcDV|&8K^1Gl}jpg;xqMl=6s|BHkDA{<KPDuLh<4z{r1upRlKaz8xv;5CQ9+ zQ`4cUk3Qml<km%x24NAeD3r1ZiB(cH6fy%3$n1Nui`3QLHri2ATKd$A_)y8wC7x9W z<c(*9b%)t6QKb>L>|NUlrHU(QnY7Tvw7VRwWfJ1cki7%N$;!HnO@?W>-z3O=gzQU= z991iit;hLk7j1*u(aN&NJZ?Atrp}X=AJa3Q(lUWEfiLP-{p?<$)(u*;u2%vx+$8dP zGii_OqN#1TO@~&F8Gn%(t|3vsxGf}M1$>I#;+x*GIXagDB)nVWUThkbZ?|{ZPNG$F z_YDm<<YE6Dbsw0cE^(TF#N%<_H@+%CRqUPaIlfvUs&<bUt)|@$sKh!yO`6V%GuXYS zp}be?uXG_~_80oT7Hu#{S)Z{8xV4af#u9Yk-I{F|XDH&Z1ebLeTRz6V_%?+%$__R} zcGWV^f9ZHjIJ*0VM^I}QDr=Q(R2BX{A$@ZM$<GT&1OjG_ac2BRrE0<-v!KCo<QLx5 z!69?`qah2c5BA*nArNa{)6Et6BCItfB4HaI=(7i&veduTHD@)l&;T7lbOEvy6hdOg zET@(ORqF@mvz1XXPXS-WLTgO@IoYNvC|i<}!rfBU*&nXhPj7IE@sa3;HywB-civmE zuc8$qOTUU;@Gja(zwSJ>5=hGM-Js}&D~bi1(M8SNTab&aF?H{CcqIx5Z!WpMK4wwd zh?U{k#uS}%V<!CyD6+=j5Eb+Fywx-Q&@YzcTdi8>Sq;f){nQ=130nLJ=pqvr=ZSB2 zaA<7eGn+};6Ww>pFxmO9WQ_F8vGP*jP<A<ANxJ?hSS|hVJE^A=U6uG+cDCz+MrgtI zvPq8z@FpQt4s&eYodUWb^7VD+sQC8N5p=*9__p>KoI6`(91d)6dPXs>uxc?LCd&j0 zB%N`F1zO8~gw?R?n#b}+s<2(5-Zc2)P`-xPU{RbJR0n|-E3(GW)J}`$tNjKniUl=$ zV-U(GN>6D-6qIc+7;yMiCmTwYqjk%0zkKSGc=_%$Ev=mKs{ic>51-XsH#>(RiZHkb zr=|s2IYV~x#-A@u@WQ=2Fw=argZgpeD^6|soj$>TB@_JPFj=u@VkXp#l``qDcQZ=r zCrmE26{RA3<r{<S;|L>{-~aec;15Y%$55NSfng}%PS7Z)JNV~(E%7UuK*PCv;+NFL z#f9m?#IKTRA0MCdi;K<u9RGTgQHO$L0c<5s&8^WN8m(!Azo(w&a;p#M8V*|%<W>XV z5e}w{uwYt?ep-WiJ7PF?cJ|+TbrCN6W0OT{luDnulK!FZJ8`>U@OYEUKI5lc#Iv)r zM8;1vZrLp@BCzjx%$i}f*5l4wJ%;`X5Z}MU!4^3!PFGt}8XI>uSEQt*78?M@g~M4Q zK+J%}T5ANIKS-+osF^8r>%Pu*jj=;pWFTj&!&|+PC7LDb$-{Ee(&zKW{!IUpI)89< zbZnkaV*YG)e|?xK>~@rFiH6VIQ=(CHu-pJ}_{^d4FU^<@tSv${OL&#LO}Ey{^<-i4 z6`!IS7Aq`08K52R@83^G!DiMhmi+RC@z<|ki5$k+u@cXz6B8fll~YZA=@l0Jhm_iN zS(BCCTmm6ZF0KLrdpMoXmY_gUcmCty-}Ph9T@i8_Ryq#fhLSM4o$pv2;^N{y52p>% zva*GkDDm_E*gQacdVM%;(C7$D*XO{*CHf5x&4J!mul~_&d*)*hal*+vyjiKSMDxBq zQ^}ey{zQv|gQH&bbTe;EP-3q4FMpU~$VHO(TX_DZ_=Z)FMJiDQCO%UCU4z$>`8PQ@ zYyus>1x2cPscm=EUB^0QFnxH!=JD)i$rz`8gKdYUk_*w;t!`RA4Q1OpC4Pgb>Vt9H z!X~w2q<b&ih!$7Ye-0_J*4+SSMe5^wHp0A^<s@A><h4gXjUYa=>*ZP2t(i?aYI-cB zyQDf0ehZVIdkO}#ZJ!FgOx_Q^EV%4YvP%bQ-%?*+y|y09zcIKUkGYkID114G2m)Td zF)0CY72aPqY38}CXW!xTylwJA2WJ(Bfe-D;iYIfJvczf@7KG+v(>jpBl6~UGs>)Wo zyX#}Y)TAYl#n*Zw^q|2IHll%r<L8mnxX(>Aw+DenC@Bk^TVn3@IelSzvT*Sb#L0)E znkdTEZ+93juk~(Fv~f3^mH33)W>Z3J5DGmdc)a{$AFR#eE5p$%X={sP!&Vf1*LHq= z+8B9{DY2NbY2L?kkraP&=Y&FtHk*H2wr1eJMc0Q3h<)h2QGVV+oJCeKUHW6wy8nPx zYi&=DQ^oXJ`#I`o&j#@#VgnH-l8TjO_*v`iZxMdor2P|>1XSyP6mB=Fm&btl3x_*t zc5)0)O|iz~pG331is!d6-S1!wW|KVBvEn#LX~&&_RV)@fkfw~5uJ{t)pW3h^Ipi$# zL&aBmM+-Lb_+Tj@D~3;6g<;Fu<NS+KO#TSyY(t^;>v#Anwmrq_;#z~TkFs3=Z=p+R z4ZY-Aq>cgy1ko<wrMI0kWp1#uAMe24^s_`+(Ipf#O1uY-cB$W8)MzucWIuVmOC!0U z3Ng4X)Ri%Gb_TF|k~iMnZQk!=KFh;x#nwDk@nHBEbTqx`wvLf+O0w<7omIpoyusoU zS}9tdm6M*Dw%4d8X*fOBsG>pwXvk{Xu|i)SL#W}0)r)#b4KAWoo|^)K5Wd&wG;~NT zr`Gbu+16!jCk9>Gl?nXZBOHD$G>;4-_ioynMi?hMEs>vN^&(HKPza(qUUU)-CsAlw z0B`jlm?3ZAJP`W#V#z&IV{`Txyh`~hv{qzyY@V}iCQU(%3b>Saa{j|$d^4XaT=mSB zRS%d~{IRn!Xq&fuIe({%cv?R2Lr<ob4J$iep$_VUPog;0d3*<%V$&ETJ$n{*EO1|? zd3<}%;NMT#_3Ny*5$;U}$YSV|wrn&-SPMpKgIfM{Vbn1_X!YH@!d7K@D)9@*4R)OV zAw`VnE4wO{C^~|w5(BhxQ2pg_fd`y&{~VY3^BLJqxk3$xY{{09D_B3l<!TQX$G%;~ zlV8(T=X>Mq)uQ96Li%xXiO$SZ6Q+UBBO_#=*-tRlc^EG&JbJg;oXNm0AoVqWaImSo z@;k262xRZflU$)EwM+iWkh7hI==4=7Uug=Nub#MNPI;B%Q?43l>aD{%h2m+W5%_Hv zEuyi&`<&hKk~YuUW#Ymp&kR0EpUxW5)nm5ICg0&@3@EePW_fxyF%LlGGm3bYr6(M; z^+;p7H9BjS^sA3x69=o`-zOn;Wkw(f+`LKDZy0mS`Q<rafQ<4SZ0^Ld<aQRkp5Gg# zryl1d<M3N2ke|cj^3%ja6zf@!`E1!${x)ck&53={SdJz>yVHVu)hTx3-;_sM7rUU_ zvv<SD$k@yNtd&U`!x{Ov2L>oKY14d;)7ge1C0exBLAuAQ(mU`GE3Hw{G8q%Hf3@Ie zxU2m5o>Z!rAZ*HN(F&YZ<hqXDsoB3ZGuV!v0fbM<^^{|U<ppK1c!@>6It&A)|Le^( zeV(|HZ!j_IUGb$^Rp$f4R+zpERKNC3$$}xu>f~Py{QqVL&i|}&dX1sXOhfb2NdgSB zR40mE$8!b=1?5=yhg`b&z&bh1um7X11GE4b#NXZBak?H%%-F!d2loB^YFt9U%Bo=s z0SyKXmjk4nCUCy@*DzfdwcApS<uIJ1lauLe>E}!lV2rr$y-sOF3G3UnT%l$!rpUQ7 z>PK~Ss|T~hlGO<IEIp0cLC5ua99Vn?<ai|`J+IxCE5oeuY=lX~t~yaDH;#_HhDCwE z+nJp4Y%wJr9UTWPHl-%AH8UZ8AS)#$lhl4gANS51!l;+W(YfAEAIPK(a<q4JDgUjt z(%2{p7eeSV2P4eP*xzm5w>X4^D1Y(z0dhL*3ZoZe@SNTdJGjXDj$H?jmd0p6{a)T_ zKVWi-uOO-1Lna*&^PR(iH|xSudbr9sci!!7qd$MhTnsWNSnXEW`GHVbw>d)|HGaH+ zB<lgvQ<)k#Fl+7smX`5R18hr1KSwdw@Yd~~dM#*KjT((na#^9`x%L)$8#imagap6l zS3%ngP0*&sw#)gV(2-&91X6=nKg+u_^qKM|L8*Y1KlwF+?`f?rL$vu<1#oE=DAJ`* zi-uh0K}%IKtzxu+9pROmeh&pQ6zEFED8To?_wOppK9>==ySqy||Ilys;DT|OA!le< z*z4!}<4QS(*0dMlfypVqYxhwP?-~4@X3IO8YmN%O(ZafuEiZb1r*B8Jh36lH^w}MV z#wT<$E{N6;Grl?Qj=xrnO6yECL#EMQ*ExK*?%SRkc`AoJQ-!EtI_v?Su3Us3>U&V? zbc$-AiRa8ATIVi;OepkY1-e&<?*d{1R?uoYvs9=1CMp)l*Nh};v*`2<OR|RndNf$y zDiGoxShgiQ|2w+XM6zaPZmv)R>|sjqRE>cU;h2XH?rB;72l}irS)&Cgts;A{t`32# zqf3z9C0^yd@00jq?Pr}cn2_?Q2=}AXM<ZQ~KZ3k}bjHcKV{=Qj{$)>Atn$(WNEs$h zs#j8F*($a#p(g>Q^p1J#{?2%QBp&QXu{o0VCtK-d@#0x-@|tpuVxO#jP4)03uD5Tj z+HVAr-vfmkq6;+RX5n~or$=9uuN#+r*Fc3}iiXS$X_j#Dw)k8zAm;URzLSnW$|E-G zw1_KL>k?%pU+n$$a|!FVTmzL~H`zC>r_NdF#xwP3RlrSw=@O`)_$+tlx*{Ts?te!x zIbb4wcyI5^URhiuydh2wW?_QbHsAWTnOrmT!Iymj^fx-m!fb0B5!QB!P)y8*M5PhB zty~Cqk$=aiO?Y@>OgOdisy6ZTAxg5pz;}G?H+cR>o?f7}4-G2int?nhLMxuE-7N(4 ze&d>6PmMu@at#GAZepjS9bMg>@$q2GOLnj7hTnyY3^jdZ2xk>~pbNBPuh`F19xjtg zKsBzl>zC1MV201!nP0EiUImA*h`zgg?d3TCo~!gB(PR_GLS`=eLJ%>*g267U`%d92 zV{%I4+YcAYOZZAVIuk8XhR$#x0hc=`!HgE>F{~ZN@RgnI?QU3DnG(zV`0E4G2PrA| zgN16^=jUf$z#18qTQlA6SC3lXToMZF`kGq<k)iw+H?Q#Z4;&vWE^zTSXyD$2Gu7hY zgsDLn2Pd<AW{u5{I_?{IANnooK82bs2tlW8tt3jVxLc&#R9in);`T^aJ=dzGHjhP? zj3+l8`zE6Fn}~N#b)@K~yPI7U5ewb$i3T2HX7iS55y35+Rlu|&!<HR%qg%jPuZ+IG zl&2R)dBj&p_m>m*m#esQDzSFW%IX_~Pc6pX0QXum6A}MKdYT<j{NH(KO#39BhGyAJ z%pzqfar#(^RdK=bi+(ESb;@`iyaziYFU}VIYSUYX)xlR$2n>#{;@3&UpL{4})=!j! z)W1`0l06WjT&Wn?Bl9uBhm;8}%DCL;craS+d_7Q&fj0_J+12x4UmfB|`8wU4%2sH8 zoZ2v&Rv~s|u^O7^`uQu#e62g!vUH9aH4aqku?hCLKKPKvww(r9M?*h7c~2d>mB?N} z-_Uwe@9T?7kiTI+)L1sRjED5R*q2!lZcw%=dNb$mzPqRekR0Vm#&)j2@DqVJ_ZFdK z3oU8H{not}W;9GdmYJ*F_Q2tbcduUWjh*a8@1TQlJV#K*JWA1+gf$_u&pNlNEzb3e z_xFaaB*7A@Po<hnFl}$l&gDmHh~^<w{3&I8e;I4t%E69i?;9ksWHRD?ca9P<ef}$Z zqw}4-pSQ%iE8+d6+WQLq{t5b92HAU~4%VsMd-ij17f8dGu9Xdr^cl$lLzi9p9Ne~$ zFRutvxwa)2-P=4nI|Ec!tuG#ZFr{9Z1$@JEwH+c=QQ9AhdprD(rwW+at^Cbw{?R!y z6KfIZC7*ehFE<p@H8aMwfBkw#-Wmgd={S;FH_s{&w7<@?bz%MTzXU!~lO2giqW!3X zDixBsS<V~;HZBKvK1d70ZlA;D@@UrDXKc?2SnhlWSq6khMJbbGzN;L5dhcZ)vAKFf z-rDlvZUsK7buGc^S*=jNr^!h|+&0sy%Vm5uQyc6iJMaCJ4AT@uS$vA*wfsXo_$@K# zDh1F%x=p&GN4Q_=N-7lR00aq`;s1*)GP(+sH!#JYM1Cr5BviX8AKYNNdQ&187P6SQ zAB8bXqD9T_Ax=u>LtLm|X!hxLU)b^DB5&dP^W)oX<sitQfVsJudDEE=Dj_Kq{WlD1 zQzD!;`QVK50OW_3=CWLIKs>2xj`-+zG(ygd(T0&S{RVbA#l$Mf@*1nj%6@0tgP`rA zvODN^X5M)X8E4Wo$jvXR-j*oKqXgaGh#x0OLBm%bMK8K*=}QmndVuL+?GiM=EZJD9 z=W>ZK=kc6LfRE8liOpKy*bxSwc;*Tr0SHrZKL3{|7g}b^x!2IT{eJWKgs2635Q2YK zbtB=aFt7_SWhTp3GSEmPpw-&a!c5a-+7SRRd09oRUvFm$UTZ74BH{Zg{o%uhqd%bM z`(YY4<zW-<G>7Q4hQGV+zCPTqhK}|-+f7<n*`d=`^w}zV)%qnrMel6lkdZ}!K%j!M zI5gE7JCnE7PyLsALUpYQUa@0tRPjx%?ijGD4UhF$CK;PIC`Wj;)|O%R>(0p=do+Kp zHnF7U_VJmD<nr$WK{!pG#H5k@rcvKAU|XK|!Qh;tE(<MIvNdT6Ee7a%Sga0(cDO^3 zUOs8z-_2)6u*_Wat)<Pwrrna>zvT0iZDjwD!pj%PnW$*t@x}I?_XjJQ$ajdJBcxB1 z;;3efls>bu8BQeMm-@1uHq@a(7x{{D>}{5&)K~KhzFgJ)`M_2uz*sV;PGgahCck&v zFD)%!#ui?dGk@igo#p}-yIrxp9AVhc^!|^n-&Fsq79i(-DM^%sgCpPg`?~=DDrNjv z)4!d%t>t$FfB%l}iYtwp>4z!3Q>pHe@X9n;LIOt2oCT(;{#hCh{8!<D=sz~3{|~2M zvILmk>ZNMJn7ItJI;Ny61CNMph6T1=ApY?v6}CaIn=`t_S?>77M*5eCp8xyOBXi~h zdKi(m&lUP-hdc7W`*TizOJDihA7;{R>Z7koXLC>*$Cx!3Uu0}-EP&?>|CNWCBqasA zJyhwlp&sc-*t#&z8t5#`ri>^7&F(}uY_2`#&HZ}Mf=#U`!W3$wA?!j83hlS8iz<Gi zV*Wy#o14KPzKr)+J#QgnR_wb#sh#XUrDeGIZB!dU=&!^Fe&(joj==UwuCSoGFU*|C zM9U^!L`fvzui0fT{|OH74&ky};0%dM8=q$=kMXr<Smd<lML@ya2H_H1Jf$hanROZG zf~SHOD&{;7MXatdtPH=2y;RDft|ZK65|N}09$~8bOxL}YqUEXe-gF>jaOb8iCZUB` ztj&2<GCv+8i!VR*gT{1lw-kombm?*AtJdP^VL!cKm~YaZar(-;fvnR=>_-h;kpNEf zCGZ>li23s)R2g8qolrHK`HI~acg&mEKCShOI8R?4-R3#R0^GV)pvTElSLg3*tL26) z1pIWIof5b5=koUOhV5hfu9mRvy2(taJNq_dhkOmS;Hjh4o$sL8Ld`vZCr)yvcn-0x zD$(WsATn%a`ckYl?S$dZRTJQKb0kx_)}2aj7*TP`Vu~D(1>WCBE&q~U_p{hLukbD> zW>4~4l6k2AFHI9FI`|QM8wwp%o&W$YNfVick}JuNp|xTniZ2kVHK?ztvvz9zY2R8^ zM$)Rdjh#=usP7&J{T&o??VuZ7*hc8ofx7pE>+$<DM{<nsH@_^>3;AsV<*?@09nfC3 zV#xZyiC#s!fWJUCd~JgXs&8VzkAaMAuI>VODeK!`2iFzXcL$vGI19KdafAYR)~=2~ zMPiQ1h_C_UA7FpePKV3waG_3D2p2qmJf`o+?+s#3OHufe5<GX8?x&+MEA3XpN=I?N zB$|?qy`xOS*o+j?ckqdMmL^=X0BAUipH}-r9V-@=w(CO!Ni9FFK}B0b_IEBWAa`qE zuX9>)u`<2iA57ziPir>w5sS-S7p6{*;>|%~)XO?J>QR3H_mg(l7Qzl0a!}Eu8osoy zyRovv%?JDz<Llw8Oqq0LQ(X@dF)z1`rb@+HKx|qdrEj1AW8_L&BpyuhCkxMkZ`PM5 zE0XTj_ttGBqO6QXTU}kgy?HTts9=UB(bcVYmRNmix;9ohI(ppCFxQh-k#cRQ!f;tg zhdPW(JDT*VtYG)zKE^2oV#o*xRUZ0OEln?x1<YK~`Yog;z>Xa7AeHq6@*oa*^73x( zGe}q7OoCXsS3F?rzX%X(YQR$Ro%Np`^PWn=c!NN~h)p1f`1S~1^MNkDoRG}eA?5!m z<~+liY`*-Dih|OlNGC{_CIZq4UFk*XE%aUkNC{0uij>f6fII?Hq!W6JNRy5R=^a87 zLT^G~<MZ3y7tdb%FE94mm*>TO=AOA`&V1&anQw#ZvQgH|_+g#SM+n`>i`^Azxx-tc zm{$K?mIxsd-1$=et0CZ{Yrz*6px<GY1KcF@g|_(ofykmXpG3<g-(*O@w<pVK!Onr? z+Gc$ByJwq7eu&raaD#r&z@B0O#TuKG$JpOPyCp`r0OWNc<LX=sw?tRxmE(K*_VyrH zN%ELg6ArcHi0;W^i9GI+IWQ$Io5y1mXQcr4j`OjYsKurFFpJl9wjzLl>emz1+;7Rk z;s*{FcpO>?cv|{T?u~m}%K^El_xf#@W`=^yk1BK&qzx~lH8Utx5Rer#cr~P<4tbin zd7*vzop;R;0O3t`;*SM)^y>OBA3hO4KI$(|@3{`>dZDydnTA{*{*h?7V0uj;mC5}x zpE<>J&Nc-m%LF3&qzKLTl>oIuAS)(PZz1$T*vZ;+$@M1mqY>OMe7(PUvz42BCnM$J zY?v>;O$C+SqXNCk{PuukOMgJ=d-5ks#pfFu6;FZ#WEm!zq9ma<e7;0$nbe7<AM2Qn z$bA#(J<5kkojC&Al$%Z@@`!J8QYwDyfXMi9VGeQFzOf5cxyVXj3n}oey2iDgv8^-N zong)tdyv<Z>gOeqKB^v7Xy~qjiXZ(BJm(5&Okb^$sL~xIjQ{|Kc=t%xE_}<L=zb>M zW&TXY4Yj$FtovwEMXDzy76o5FY5F)qoN+JC2+4(`2|J7P%n};ByJF-?f!WJlrt2dw zh)HL)zfXkISq!5`$r1y97|PBVufSB15UulojrmK+@}aD(A?L}(-YL9xp?Pd47j>1` zF4A|2_3ZIsJ}HhsaT)$Ku<zPS<U)F&0IlV!ni#XCh6CUyqYSuo%NcuDlvwfaJH~p* zzf4*D!ppioVz<#)#*rvwnW>tRQe4Fsxagzi+~1+u{mIhTuKGbH6FK6z&HRpV&?rpB z9V<Irc+;T4*PIT#EQq4R;G6DRc3e{r%Twa65UMR}Vl<KA*DqUf;~4wg71tiC^*?vt z>?6)dEBNPxGF(9d^0(Ft@xP0@$o)(D<v-2mcg!AW;8H8{VmQp`_M}=Ulsn#AME(VP zjB~3(|95^!@ZsOp1oAuodi3^xGb@fb?<x=-<APoL6WIwtecXOu5P=gnSOX<nFj4+L zxlFw6Kl40{%|+I-XEN{tt?<Bi@^ZgoF%LA_&^tPOeD*ocxHCFJG;$adZ!vOMFi2O! zj_vjOgG1p18~gTboYL>N2nG&^#vb+>9I~!zJWpD-(g>RGtphVX36#<{yiir(44>UC z*TvlzE5t*4__rPd2idB|r2PqZ2OQ$37A#<-1)xq|9y(z>nsY(vI5J;28&kEO<BP@X z+|m_$*4<4AHNUC4Mhufwp5C6!`>=R5v}C`rDE_FW&Aio62}RG;PF^EEX(i$6e1+gt zPA<6YN<93szOY=vV(;x0(*)B{5LhO#YO0F2K{u6ib<x(dUX~Wyn7ejqo;B{VGq`wN z)qt^li4-W6<jNe8nS?|MRFD)ch8YB%$1tcvhSyuocJEXhZmMW!kd#L^EL8J%nWcpg zMI}iDKN*BN*rrM9PNAZl6FR<(K}Enft!^E6GbZi{uQWp6pH&5_qjB)%_ib`N{lfcs zpBnyHK~SZDsdoUt8RMVTwq*{IeI2ff=v#5nLXYLw44G_==F7Y|x9y}c+XALt-0Jxz z-X7LZ*=1xHEWL~1Ra+j*pS;M|6DaaM?%HzHJEi`0wkPDFtr|HTl4aul;p$l+D`LXX z8q_yCGs)!_J-^n6I;tYmZd^M)3#zMsPIjHLf667K`G)Rz!Ry|woa-1vF04jIV<cs2 zyRskP&XV{ZX|D3XzRtZ%3oM<AC0oP+^Ka_Tcr(1FAP8@4aU=!g=2sliev@Lw2+Z%- zD?Yu@dK|p)T6E2(rBeNv8(7ZW0EmVxyopO5&g&W_UQ&y<7kS1%+c!<?;A=O&HvQHb zkBSGCSoFydfvrwEJ(GY!&7~6Tz!h|2mF|_^Q|H{<&+;n5OVReXrJcrF9$3M5SA+U$ zQ`>|ycrQ5YAF(Z{6$TG0`M&J)dJ6b_0?Crs4_U5gW@t(@dS9bUNh?!Hw6G|^=7T0P z`$|`wTpwWnC6w?`5bWgk%tq@RwLk8+Qz4u)=J1(n3Qfh0N_{F17X(kL5|#vDd)FL0 zO!h@BuCo=2T%5Mg=+zcy77`hU2kv?tVT~D<;vBFJ0b3G%qn-RGM)1Xvxl)TIK~KJU z>vhnt0QHM3lGyY^^nvZpi2K})qerC7Yc%wf5Vtg$2PgLpriSBL4{FTbN#CBcThT>< z-@IuzSlf;XgghuM9hu58_dX_|>O`I3tWs!;4RW<2ZOg25k-myyTa$}JB=@L{OK?Bd z#m=xTHktT=$JyJj#b-w-VV1aG%VBReq<>d_$e&#!Z95M#7p<(){MMA-1Yi8}-j2)P zGw6x=ps6?#OkeeMK`9N)FDRw>V>u=D0Z3)j0$0twqp{^XG}5f@#t4y(s~RA+TyW8U z667OM;LzR$9kVh@@912AeJAt6M03uq&-i+qk=g*>+4S}(;MB<BjCcl$aK=QLVMHS{ zJ~w-FbM{><n0|B4zzi9U<L#|Erfd4Ac-~BUA2Y^8tAyZ&VSUYl=;mBM=+fKo>WY6- zbP9^VVA;-rD0%_IjdHnk5wp}pwORykC1@lQC6JgLtiyW0Gy)M0Dl*lFXk)(AIK>** z&B8MfkWI!M@R3(hw<60>fVe|5ZA5>_yR<Gyt&oG&hX#$zN!Vw(NK<`4<?i{AQIOgy zWoTrq8S{|ar7xv<>7%Mtzo1h!QD?QZG*gMhnRj?!3}m8<0`SFBu=wzf->l>kgFkdX zLds_Sl8k>?vtGFR(TfoL-k3RLkiA+{3V)TxsQ4u<PzX34IemgZ7*eaV@pBsr5cGbL zO#rD5nN)q^D?SSN_4o@nFprtK%F-}bUc)Ut@Osl@M><D-X<x2Sz!anJbo5t5Vu{5U zi&2l*XsXmdXQ9?xK+_7Vt9Q+FVoS1hpVuRFCs0Lj@i#Utuq>glG;t(L3}r>jl7p7z zUb>>KjQCqGy9bm;j-*Mg0u&E*;^H!yT-%q_5!=*Fgjtm`a~ApZ@dV>GKAW!_&J*&D zPd^On5tV3NMe^r3&fJwn#CyZi5kE>vy0V={VB}X@IbseD?wch895@<Qh{`xR{GvZ? zXQ1o!SyIx2duKg;!}G8CW4sCwcJIxG_JVX&()Y#?l7QB)qeQ>QY;L_3j*wQ@Z9gK6 zobc`c8LjkM*PI(>qsoMU(d}e3r()E47}4$^_rg5&i1ESDDVyA8ZwYnJqM^_>_Z&(` zZFUisFrfFnBO6~UNyBaSIcO|3c@mNvp7B6%b=HNilf$5PWmmPlBT>O>^2fO-Mr$9X z$=J@$4-r1Jr6p2UPA1LdZM4}zK`)d?+s3ml)H#Lu=AiS_Q3RKyf7KV?e+rTc*F|H9 zE5x8nejUXao5=xwGKuYA?_)XFEzeIH4@b$kQ{XfLcZUX1kBSKbh4(&jis7fF!T?Dr z!XOaHKfs(w#dkwCHnws5Hv#pbEl*6D3(v;uoh6&wuHAi{mQP>ddu-&O6DeRjn`yYb zTn-@c2;jnNs|Sgp1G=?I2>)7!=PXa@rLux#p3{lME;KU>QIIFy*2RlGhOC@9%Ju@Y zCw-Z>PwCa?L1OOQYqQWK)XaQSXCuK!L{$fF6#O^`@f?#2=2EhOAS>U5&~bl3M&a~h zz1O$?Ah~&Snuox6aeG2UUBRz_4Ji-Ev6E+Co>F@|;4gU*-j5c01<E%qO}#-Q$63h3 z^Bt?_CH8j9jZvx?UCOgm_=UZNkVxQf#Vpo<Gow(l2({EDnZ=glKwB|NY7cfxvsp%9 zCfUADy@mo3sL?1R0^YbS^;LFdPEp_o_eLE7IeEX~-G>WG*DbJ-fUYcxdBsda;e>F! zt6vm82TUNkkjRfmAlq+<;`=0kPRTFZX3&P<sFmT0<F<K{p>cnALN{u@b#w<&O-p(K zc#-9~kFX+~<+;Vas7<6qp6H2_aCF9Pv$rw0sADnk%6obQyV>Hx^U=a^1I@Tmc6DXh z!e=s&8P;ET2lNKu;3@G3K;PM_sjIhw?Y_&_gzhDbd(a+lNX4wN@bSf6V=rlZgmFCL z4hub;Z}9H(b)Ial@A)p0^hXw|`=8wQ4~+YVS*KD(m04X~{m%W5`rq=CHr24P+wC|~ z3{8mC{NwLG`R^Ye{x6$rmBb!~`LbM177jD@j`Fe8{EqWBgouI>Dbbe#D_dHKDbs4r zHckk6Zp-khr+nior?sqq(!EYo4_&u@Ml<9GUE``r5~mSw23-%`d0c<J$}k=K_Ojg! z1vK78s9)vNbsscg6Nr_b%PCRLOzoAOyYnrf0+%c@0XD$CTb{)~>jaFahU)R?llwVl z`7zFeONUHuIDH|NYhJT4k|y~d##&~4%7~X8MtIdawdg^<(&YEbV9M@y{W(g<SIa{) zw8I_^*3X%R6S#-fZ#!JLpHhJquNXwXyhek2HFs18Zh-PeDd@JzP9kfhrR9bgI2Qqx zh|hTpkzp!s5#9@zIY&Fb+`dlJ$mz)0Wao7%I;`_|<FR2#!%v<TyLr?be8LbBn^7E6 zK=GC)f^t%*9JPTTOz|>dg%dBoSf=xFW2qAKczrez{N7!bO!OIn%xL+2?G=Xw^?f#v zm5I>=1cSAB;5xC^E@!o;N^p!ddVCT=i}d7maJ8Si19upB&sFLkc60;l?`~f7dLXQ2 z_l{NwOzfrxd%R1_+ZVT-t4Qa6Ik8ehAavN&FV?Cppwq_|@vYPRyvbTShG}{vi^xIc zI5=;bMKd~tKl8*vcWP#rV})8HUqwaPzz5WK>GlBZJgm`+Jh?;jmKdHbeKw=iV(81_ zd-4!+Wt6ZXbXL2&Ll>f1)g5Yo!)&e&i@pf~RE=OGQKAe^>xXr;qG>h5>em+=s~SAJ zi|RH5)hl&i5p=sn5PdKW$LoSdGB)+aU}OPq+FzObEjF5br?0E>d)KI}y@EYyjc!i7 zXSCnE$i+L<nI;@K1v;@yS1#wW_H>$v@K~ZsthT4NA-yYP_XeMwocYkAkuZ{PPI>sH ze)K{x9&ciRCs_tB6_>p>G2VRwsF&bh3vW6}LeMBDEB50MoRa2=5;0G&nD<vE#e(m9 z!cG-LSi|yV#3PiGuay8Y`*DGz?#!fg=j1FUqy7}x!3ltpUs8|bC^VL?wNX^qK>6W8 zj~PIwCR%l|`;KJ|Gwb1**8BGnH9<}mW`<D+!D-TBq^0ZT3xMgN$gfGH`r>=LIFkTI zt<aJ8TTvy#8{W9-?%#T1%&BRi$oH@n!YTYzw&%wQyjJL#dxaFhhURQMUq5r=GRW!7 z8Ckc%5EB#GOmnIGOZp0?h*IZcU9cr+^6vAW-T|x*v@sVsV4~6Q_Wd}e7S{89uvF|j zL(kjKW?4ecZpFms^{x122)ECWFI+h?PbJh?j~EPSfL<tdLnb1m)n<xH%2}pm!AL1s z>m&Q_9C6X2_3xAn@ZMM=il)6%>j&<*bvfEhgq&7Gg^XMd?Jo6PlNBE+6dOF>x}dme zl(^?I0Wgf2C<vUb#q&3)RKm@v=C^6#H&SvnzHTM%xMdpBC--14W+g~Y@iXIe7kFtC zqbogz6_ic@uv7CAH00)kbkfY+p7h~f_S?vtDr+aIS3Dl*=>gNLh<ip;)|;S;n(liR ztM<vY?O67O_qw@wyP`xXZb4mHew5P9^GGd^dkMj0X)%r&>Kxg6UL2xNpZ+pC`(Cc8 zul($UTboXuq6X|s;p=ASQ86KHFoRE3jLjK6zq*Ji-2IJ{Bh^N=dy(U*)$J;@V_{QC zslC_pg3@CRbauDQoX5CJh;es57u)tw2jxH>F*2`lc_)DLHJ<FQMDoUs!Pm+P*RtP^ z22z~}HwOBgnUT|S7R-ASw^~eE#GyWB<E)AOS+j00R~nEUHs!~e^i{w0nVt1Ux%ah1 zERrU$WrKXF_MK@dpeM`Z0Q1X;nw<Qi7&GD_rtY-u!=Re$&eloaH+mBYPyEnDnAaNf z(6BlaSR1&EXNE`F&(3MeZPK<`Pl5sXPgAHqL1janOeMUQX_CqO$;Vnn7nnnak_uyj z&RmR5#=ZJ~;_((wL<t?Cg3YQWwq>$GOmEi;ZTSEaBYPP6S2+C?#4DHEi*sK|O#^u< z6Ih$kWqJhB*d%@LE+ao7a=h8B*d=&yjsJQRZ7gseoYz$NYt*L3@|IQ~$1DF0jXYN| zfy+$2fg_#Q6m;C8((_g3vC3dFm2bh`M;+R##vZW{e_IbBSndb)fxu*Auh&AL9^kji z;T5e{>Ovp-Ps{C1D=(2=U+<+Bd8-hfa_k8mMP%h1m&j+lqNJVQq>j|A%IjUkwY*v? z#swXFWvp28XJ#G>c%B7!^#Irp4aH3Eo=Yy6#;o3algl%`p*zyzRH%nB+xO+>W2h-s zDQ;;iTbWTD002~7a841M3sz?_nq22+GsP4#=ukH2S$EP@!WH8)Gw))p(9WjjJ|~)v zR1DgD>6ixsY$d?+ekD9n$X>og$N^SmU%`l1Dk%a^Lc{A{DVH<?(|l9PZX5V^2<Dvu zE$mKWIH~UXY6ZpJ5A|Z0iw%5;6!@UziC<8N=r(HSHgBWFB>`hZ5P<flRAFf<Vw4SQ zbvwVbC1I(pCg<Uodbd?>QKTf}2`DpxRs93~@%qI)ild|sz!Eb~nw;Oap`n<-Y|{@d zK6IuTPi-o4a1j^FHTvnA2Ic5}k+SObjc%#v%*#&GKN(l7ik>^dbXcL9D%ya~#4N9h zYok;Jc5ia@qk;)b^j647>vRxy{7)+vzgh9hF)ju-$0~#kA9N{HyzIz1U!#QTmu~r6 zjHWTmUNIlkZ_kUHWl$-%4F=DJ!tbisFLE)6TdA}1PiuV`5aABAWMf#}!8r+Ojz8aN zdzI7cR_0}UqQIJy{iCLqGEvLgn!fVUfG$-N1tMLfRkxbc*c*N#nHQ$%#E6x^$r^a) zI9OZUs{qEUTMEBBtwN&^PI!ect8C}$RIF=sII4w|#azKdOzKxj2?bj7wj;C5^ITCj zFkA$GP{?F6dwQhjp?8<hp6}EJ=selz&2N$SCbiG~JccP`n2_h1fQ1h%g@R}gN%kuA zKX~-y{**hg(Y!UgoMl}8=;ta<dGdzTZ&A$rXW0A5sjPa-hr2J$@eo;G&n63hmKeu< z-opPLz`Q-ZWp}-|N!9CjNz7nbiIpb0_w&}5PX<7<UiXg*WPMknqdaM<c?TS1q-Bs4 zQJ;^Y^ULpjwg>WmJaQcKz*8jCvRvOpp9^66yC<rib^K!E;{oOMn!|L^nek<JV)Np& zbwg(Kpwd!fg0?YI@qxZ}Cu<$jr(m$!cu01JGH__2e>GFjkNw4AOQuk6mgG6%YE&H; zU%$q|myV%;7FHu3A-gqlPU3*%N1_Z_>uNp#28H`?p=`8tB9VE!3tgAj5FZaSqQ-Ni z7o0Jy*6Nc_`srS02Lfz%pK;`?Xr3GiptAX`v3a1k{YcP&dBsp8kuCx5Wd>3!h>+^A zwC|hh{QfE@TZ7@Fia~Gfax@YPunHp)8b15J`RU<I=FLk;7x_{MZ1?_E`znrG<GNGR z(@!&Kv}ciL%G+YZEtI=Sx9vE*Y)#XFEzq-Bs&0DR5@x;8lJavc_RVc+tlOIx`#VL- z8u0pWnNh*SR*w-F)nlRx(4t1!JNHN&D6FXh|GTmv&e?xSuKq_6^dFVZ|8X<o1`~$s z7czJEkE(W(sU_|xfuQkW!{NNr+Jxg2t{(dTdrtU2<Nh^s|Lu16YsuCGoKQTT>I*HU JN(IYz{|0#Ngp&XO literal 0 HcmV?d00001 diff --git a/docs/docs/img/output.png b/docs/docs/img/output.png new file mode 100644 index 0000000000000000000000000000000000000000..fc8e73c3ef82614fdf3d02393442df6bce3931fe GIT binary patch literal 39011 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∾Op42XJB&qKr5Y= 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 literal 0 HcmV?d00001 diff --git a/docs/docs/img/philter-block-diagram-with-redis.png b/docs/docs/img/philter-block-diagram-with-redis.png new file mode 100644 index 0000000000000000000000000000000000000000..76617b2b453bd082f9d04f5ecd31e16f2f141391 GIT binary patch literal 11800 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 literal 0 HcmV?d00001 diff --git a/docs/docs/img/philter-block-diagram.png b/docs/docs/img/philter-block-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..ebce8d26012bbc7c738052db9d1996a81b1ab134 GIT binary patch literal 6371 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 TWL^gTyijn(k}%g$2NVAfcriia literal 0 HcmV?d00001 diff --git a/docs/docs/img/philter-logo-transparent.png b/docs/docs/img/philter-logo-transparent.png new file mode 100644 index 0000000000000000000000000000000000000000..8a891766841d21909883dc57cf5ae4ad26c34439 GIT binary patch literal 8586 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 literal 0 HcmV?d00001 diff --git a/docs/docs/img/philterd.png b/docs/docs/img/philterd.png new file mode 100644 index 0000000000000000000000000000000000000000..5c1b29f2abfeeac47579eed11bc135e78d626843 GIT binary patch literal 3285 zcmbVP2Uip877Y-kNpFTKh*G75CLkc7^mYZ2UZg}qZ=r=Iy_bj(q{!t0DsnZU2*l8& z2!x^#dQl)Cod}_eZ+w5?t@UQDneUr5Yu21|_C9-`NwYB1XJX)G0D(YEh6eW@0Bb#P z-lw|^T&Wf(kAMXntYc_J2OLN`_f!z*N~YmGZL9E-?UHB<E22<ux#N_Fy_1y<HFa`+ za^WQfOXaHW)GTQORCl1Ou0j)fLMtE$>c&5)_X1N~QtdUMWGekc{EO#X0_15j;u$A3 zC(Jg_gpO4pP}|YzkaUou<&V=kB*|>GhHI3g)q{6PXBtP-xSYQFHPTNyVK65H?YA>~ zP}0(^S7?cn_+oSy<p19Yk1kR-Cw_U7XkFWLeB9jELLCo6qtSFsOq6(R6b;-{_Urg~ zVpo@rLwn5p^4zy?F37X(51&Uyj{ZEJ8QK%sUmNK=rEIdXvr~hvB{pk-?n-m(Ry}Yf zFZEnJi=EUR+PeQVA%T22>%UBV<b0`ogf^!y7&5X<?pP+jw2~wbtM9t>W<tUYBvihC zVX9l`^HJ8Vv#!Kq*{@%}9&nHvaYyi;2-|a6=j`-!2D&62EpZZegU2CNe0==z`Thu6 zrtkNM(K~`Hot>Q)udSxqW3`m9g)co1*{G<frm!B2P7x$7I`C8aSW9uv@T2)KHcrkJ zv81^KgaR^i+9%oMrmnFuW3Z`A;qny5?c2VW{gUaAu>*OeW~|O;)bXAx++FBy`70qh zX6C~WU^AT|lkZo;3eZZtObW_pKL=%_@E4`(VIpd3yoQE`$0uv$rM=O6owS+ROnl1W zj<k~zJ1uKPYmY1~mm4GTYNd|0wrLd=!iDlc#M;{0MM~b>`6yIgaq$Ks=(}0K;g+q> z!bb>5PEIZ^baSGjy?s$?Mw)x@+2+gUzFN-(j2mr;TB*J&nM}5+_heG`omrW@ul(p= z2aLK9KY#b}@$s{i;bWxc*Rip{jq%qKMBTugMI1y!Lu0BfS{(|72Am%Uwy%FC5V|?c z?{t>b65;Q%sI(47bwP12U%vDrx3fMXPrqrwVxcvRFu#S5X|We4v=j>ERbAaB&<{%F z3W@ann7nLYYDy`Pt^wc}Cla-5i6Ww+U?`g49jbM4ybOxNVC2D<zb2)(b-~OL3m+rG z*Q*L0dY=^*R<^YX-oJmpIb@yv%4M4L^z?v@afx>1x=sbFxz?|S$xS9kMz?{$z(BdH zSAg0)pWF?8w|wNMhd?MxN=g>(PfS?ztA%{dNk<w#c_OZa&Dq1DsjjK0@G$boxDV&> zt3s<zlT%V$8|`W&y=UAoHgbxJU{wE#zXT#PE6Ws~&}D^I7HICt;Hku5*g&Hb6RUsu z#l~tK?#yQt7xR{=hcW9_vLQ8v($dmwu<rEZaHZ9u7i&#rjyQz8md-;-uAtyxjo;UP zFK4MNbR;qIfI9q|u{a!`l=a(yqIx({Qk;{akfN-jvfL3*^XlC@eSLjex0P3~#HH;T z=wv_cQ9m=Pnk@*&<MD*6Emo2}O}?`r5Ra@=qF$wTaIivTRFp7#+O-0szwGQbg7)wF z`rZQaeo2Irj}~KTnu+*)qbi#=q^gmzv2dP&1H2g8o$*g~H9H6lnr@G6*KZMuJ(oxE zadDC4JdbwfO)?+67ENUR`H4j<7l>iCwK8F34aK5$K3aFV>Oud?)&hRkYi_ty9o-Bd zo+1x{KxC9u)fS?5HENDNMpE9CYCh5r3W9pU;Xx<1p=tsgvW0{6!inSK<E$8)t@pzK z$#1`18z_)+pT>IlDfRUB<^vJrvFd#OT4jvhq-7Bdc|FEaZ93?qj_E+K4P)H;ENpD( zQ2mMT-^<-OSwW>{WF+*vcL9|Il5|ym0U$?Sec>;1;|3{v8)Ix_^mqUO1U6E3DZo3! z%FeF%Qwfkr%A~AwTPCbLn!B#9j?mc9p!lb}d3kwPA&^eA0&H}26ol#r<DGK0wtN7F zx^_Oj^!A{sp}~c+K{UfjM?^$${0l(J)Y8&|kfJ_8YH~~4#2p`p7Y%uagoak&@d5xs zHZ4InVopdr){!@pCNFGrUpEpwJUmQx+;TKl<$9Yu%nS^!v8N@{fvK^+v&uogPAT-{ zNPO9y(;t;4W_o(b#!L%7XkXR9B`}8;Y?%K8xyh!^TBLArTl45krM^J#Mu?gSs=sLJ zpMON5YHAybhX@BdJKp|*0TGaatE=!Ac;gB{zV0WA`Olwo|GYTcMFDM3AIizaHQm?- zZ!A8bP)t+3{r$y&biklI15r^CkuI@Y`wepSMEH&M^>q_JFR$01Zrdv?YPS8ph$;*% z*NiR(U%m__3kV39xz$vn+fO&7ZmK|``5_2IYi4^SMKS^qFLVh$>PRiKUTJ^ZZLHe# zZRjuH<A@fa=!3k$@QfZEfPG?fV=p|*xGN!CTwG85{b9rNS>}tL^R1yk(W(ZERD)Nq zUB8~7>hI@QR$`!q@t%~ac5rgaP7#Wk@<4`%H_tECB+#;8TXTROINYAK-8@~&kS)SG z$n^DQ@j3SHpCFN^>oo@E=CEiMb8;>E7B{0JFVn<3=Me|gAjzgRM56Y5(mA&D;oMwH zFgnQDxf~|)%fQ=P%B)<I>Dxr&@Jyq(Eou5f<~C6NTGxU6{CxUZT!||by_IY}9m67$ z_jw0*sH}NL6@KvJubN(Y-mD+%>)N`yGz!Q|AbNWG<I~M|wnW)H1G(4>q&21q#d&e{ zcZsxJ-E#?9hh|m<*syy+VNp>kz_u<Ixegb(Z@?E*Q&R)b%l!nHy*(cwLsWC{Kn+M2 zlH9{%`(n`&>AAYG0k?Yes6Kn7zrV9gBZ^f(U`SF^L!*@Px4<kn;C%HHEB*(O8kWxu zL=lycog#U+%YaVC*-L@u(W*CYB!$kejg-R%`uqC{#{N^l>sg73V26+4d7;eq=W2># zoD6vd1xfk&?3_G2Q4O-$zEYto3UYEC&sYT16xY3C!W0rKDk=nTwd0W|P)mRmXBrb6 z92~)6=!pH*q1-_d^Y5FibgXP_@!j3`Qt$n3NZd8_4*2j`kr)3U2iNw#W+cenJy9Z~ z=W!0@cmubOMq563kc&bs*KX|6`<U8TSj0VjN}aRG%8*2egu}pKu!-HI`$D*yvhr#m zGhg-4m1`a%O}k|o+1Yx5ffym;c}m^Cv%iAOuk!OBRP!f$$q$<Z61Jx6(Lpd+jZnc9 zDmS;|86^_0AH|=gcO6iwHAdTU!Wd+>ASU*lOsl7_|LfJNmQUZd|6FrCO3WNPjK{}x z^H?Y>Qu&<yqvAK`Qu@KYpMACO>)xK+n>TN4)?)UDRF2nc%BM08;y!;iz+E!&S-Tu( z|1M*XYn*`Um?-hFGoE$rE-Mq9NM>ea{Io%=Meo<yfA|~lV&8?6{k00~+Pw1e93}6G z_pOCB;sr+4=cGbs>`b(iqhr>m6qd7lEO&?QNOXPrgoeJz0@uSvJg@jFzu2CzpR2~< zqPjMjK`w*OZxIB$78aaVR#uuFod3*Nb8`-!)niSI+oo2MTw`I%XcL<zAIQeW27j+z zo%It%-nWi8ZtD0B*qQqJlU~vH^Gn33sZ;=JcNomg#RX(k#SZu;f((p3;^N{RZP90- zIk+pJ*;p*r1!FThGm}0rVD!pL68W=V4ABBme5xMC!pU&yt+iB$nt(eLQWmiaxkDMZ zOifFR2Q<0LxNvXQzx_MVW*$KvP{=~$=B@HOG#HyJS$YZQ=g8FyRaI32xr2tK<1yxC zZ7rjIHvb>-1%YUp`R_h_Sl~aQ6y^I%06i1wseF6Jt1B6(A~b?TBAG2u$xz)$%;l1@ zzCHKXcOOG|SeOdnxPdKv*QKR1uP`&K5q|IBcDE*|aOyz#pF29@EPpi_-(6l>a)_~h zWcBc2UT!Yyhsf^7^7|&yjbn)jg`53A#_!?8H}sRZ)>i)BzP`T7iVCU`t=}KV+IOcg zpVo)BfibqBvC(z8H!C$OEA-7~p1xowU?RygGc$&!N>S-L6&?L3u?h=u{^8a1p2t8B z{h1Qp;SY<=8%GPX%=6kWP8orLNDQDI8wW=MfnYKhwiqoFe0q91`t|G6&Q9&rdm^GY zZ$93cYk3P>q7(k{<HubXOe{G$xnpggO;C{ewG~|DGO`B3%c}#}{ps16Fed{WA0Oju ztH{2IFBS@xw`sOLEpF2&DI_WU_wIje&KXV0cf!4YayJ40DIml9X7~Qpae4Y5V?JFx literal 0 HcmV?d00001 diff --git a/docs/docs/images/precision.png b/docs/docs/img/precision.png similarity index 100% rename from docs/docs/images/precision.png rename to docs/docs/img/precision.png diff --git a/docs/docs/img/runs.png b/docs/docs/img/runs.png new file mode 100644 index 0000000000000000000000000000000000000000..32dbef6a35b65abadd79d7d4310c32b51979bf18 GIT binary patch literal 12051 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 OB>hodyjaY@@4o=1&V1+q literal 0 HcmV?d00001 diff --git a/docs/docs/index.md b/docs/docs/index.md index b29dd93..c187220 100644 --- a/docs/docs/index.md +++ b/docs/docs/index.md @@ -1,7 +1,19 @@ # Philter -Philter is an application that finds, identifies, and removes sensitive information, such as protected health information (PHI) and personally identifiable information (PII), and user-defined sensitive information from natural language text. Philter is ideal for usage in text processing pipelines where sensitive information needs removed, encrypted, or redacted from the text. +> This documentation applies to Philter 2.4.0. If you are upgrading to this version see [Upgrading](upgrading.md). -This documentation applies to Philter 2.4.0. If you are upgrading to this version see Upgrading Philter. +Philter is an API-based application that finds and redacts sensitive information, such as protected health information (PHI) and personally identifiable information (PII), and user-defined sensitive information from natural language text. Philter is ideal for usage in text processing pipelines where sensitive information needs removed, encrypted, or redacted from the text. -To get going fast, jump to the Quick Starts to launch Philter on AWS, Azure, or Google Cloud. +![Philter Logo](img/philter-logo-transparent.png) + +## Quick Start + +To get going fast, jump to one of the Quick Starts: + +* [Philter Quick Start on AWS](quick_starts/quick_start_aws.md) +* [Philter Quick Start on Google Cloud](quick_starts/quick_start_gcp.md) +* [Philter Quick Start on Microsoft Azure](quick_starts/quick_start_azure.md) + +## Open Source + +Philter is [open source software](https://github.com/philterd/philter). diff --git a/docs/docs/monitoring_and_logging.md b/docs/docs/monitoring_and_logging.md new file mode 100644 index 0000000..8ac1bd0 --- /dev/null +++ b/docs/docs/monitoring_and_logging.md @@ -0,0 +1,98 @@ +# Monitoring and Logging + +## Service Management + +Philter installs itself as a system service. The service can be controlled using the commands: + +``` +sudo systemctl stop philter +sudo systemctl start philter +sudo systemctl restart philter +sudo systemctl status philter +``` + +Philter is installed in the `/opt/philter` directory. This directory contains the Philter binaries, configuration files, and supporting files. + +## Metrics + +Philter collects metrics while running to provide insights into its operation and the text being processed. The metrics collected include a count of the documents processed by Philter, counts of the types of sensitive information identified per type, and the entity confidence values of entities extracted by non-deterministic natural language processing methods. These metrics can be reported via JMX, and to external services Prometheus, Amazon CloudWatch, and Datadog). + +### Reporting Metrics to Prometheus + +To enable Philter metric reporting to Prometheus modify Philter's [Settings](settings.md) to enable the Prometheus metrics. When enabled, the metrics HTTP endpoint will be `http://philter-ip:9100/metrics`. + +Enable scraping of Philter's metrics in Prometheus' settings: + +``` +global: + scrape_interval: 10s + +scrape_configs: +- job_name: philter + static_configs: + - targets: ['10.0.2.104:9100'] +``` + +You may need to make port `9100` accessible to Prometheus. For example, if you launch Philter in AWS you will need to modify Philter's security group to permit inbound network traffic on port `9100` to Prometheus. + +### Reporting Metrics to Amazon CloudWatch + +To enable Philter metric reporting to Amazon CloudWatch modify Philter's [Settings](settings.md) to set the AWS properties. Metrics will be published to CloudWatch every 60 seconds, by default, when enabled. + +The AWS IAM user or role being used should have `PutMetricData` permissions: + +``` +{ + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "VisualEditor0", + "Effect": "Allow", + "Action": [ + "cloudwatch:PutMetricData" + ], + "Resource": "*" + } + ] +} +``` + +The metrics will be published to the Amazon CloudWatch namespace provided in Philter's settings. Amazon CloudWatch can then be used to visualize the metrics, set performance alarms, or perform other integrations with AWS services. + +![Philter metrics reported and visualized in Amazon CloudWatch.](img/cloudwatchmetrics.png) + +### Reporting Metrics to Datadog + +Metrics will be published to Datadog every 60 seconds when enabled. + +Metrics published to Datadog will have a `philter` prefix. + +![Philter metrics in Datadog's Metrics Summary.](img/datadog1.png) + +The metrics can be used to make graphs and dashboards. + +![Example Datadog graphs of select Philter metrics.](img/datadog2.png) + +### Reporting Metrics to JMX + +Metrics in JMX can be viewed using [visualvm](https://visualvm.github.io/) or similar tool. + +### Metrics Collected and Reported + +The listing below shows an example of the metrics Philter collects and writes to standard out while running. The metrics reported to supported services such as JMX, Amazon CloudWatch and Datadog will contain the same metrics but may be represented or visualized differently between the services. + +The metrics collected include: + +* A cumulative count of each type of sensitive information across all contexts and documents. +* The total count of documents processed. + +These metrics will be reset when Philter is stopped and restarted. + +## Logging + +Philter's log file can be viewed using the command `journalctl -u philter`. This log should be the first place checked for more information on Philter's status. + +The log level can be set using the `logging.level.root` property in Philter's [Settings](settings.md). + +> Philter's log file may contain sensitive information. It is possible that through the normal use of Philter, sensitive information may be written to the log file. + diff --git a/docs/docs/other_features/anonymization.md b/docs/docs/other_features/consistent_anonymization.md similarity index 74% rename from docs/docs/other_features/anonymization.md rename to docs/docs/other_features/consistent_anonymization.md index 3fef412..109e0c8 100644 --- a/docs/docs/other_features/anonymization.md +++ b/docs/docs/other_features/consistent_anonymization.md @@ -1,8 +1,8 @@ # Consistent Anonymization -Anonymization in the context of Phileas is the process of replacing certain values with random but similar values. For example, the identified name of “John Smith” may be replaced with “David Jones”, or an identified phone number of 123-555-9358 may be replaced by 842-436-2042. A [VIN](vins.md) number will be replaced by a 17 character randomly selected VIN number that adheres to the standard for VIN numbers. +Anonymization in the context of Philter is the process of replacing certain values with random but similar values. For example, the identified name of “John Smith” may be replaced with “David Jones”, or an identified phone number of 123-555-9358 may be replaced by 842-436-2042. A [VIN](../policies/filters/common_filters/vins.md) number will be replaced by a 17 character randomly selected VIN number that adheres to the standard for VIN numbers. -Anonymization is useful in instances where you want to remove sensitive information from text without changing the meaning of the text. Anonymization can be enabled for each type of sensitive information in the policy by setting the filter strategy to `RANDOM_REPLACE`. (See [Policies](policies_README.md) for more information.) +Anonymization is useful in instances where you want to remove sensitive information from text without changing the meaning of the text. Anonymization can be enabled for each type of sensitive information in the policy by setting the filter strategy to `RANDOM_REPLACE`. (See [Policies](../policies/filter_policies.md) for more information.) ## Consistent Anonymization @@ -10,10 +10,10 @@ Consistent anonymization refers to the process of always anonymizing the same se Consistent anonymization can be done on the document level or on the context level. When enabled on the document level, "John Smith" will only be replaced by "Pete Baker" in the same document. If "John Smith" occurs in a separate document it will be anonymized with a different random name. When enabled on the context level, "John Smith" will be replaced by "Pete Baker" whenever "John Smith" is found in all documents in the same context. -Enabling consistent anonymization on the context level requires a cache to store the sensitive information and the corresponding replacement values. If a single instance of Phileas is running, its internal cache service (enabled by default) is the best choice and no additional configuration is required. +Enabling consistent anonymization on the context level requires a cache to store the sensitive information and the corresponding replacement values. If a single instance of Philter is running, its internal cache service (enabled by default) is the best choice and no additional configuration is required. -If multiple instances of Phileas are deployed together, Phileas requires access to a Redis cache service as shown below. See Phileas' [Settings](settings.md) on how to configure the cache. +If multiple instances of Philter are deployed together, Philter requires access to a Redis cache service as shown below. See Philter' [Settings](../settings.md) on how to configure the cache. -**When Phileas is deployed in a cluster, a Redis cache is required to enable consistent anonymization.** +**When Philter is deployed in a cluster, a Redis cache is required to enable consistent anonymization.** The anonymization cache will contain PHI. It is important that you take the necessary precautions to secure the cache and all communication to and from the cache. diff --git a/docs/docs/other_features/dashboard.md b/docs/docs/other_features/dashboard.md new file mode 100644 index 0000000..58e9088 --- /dev/null +++ b/docs/docs/other_features/dashboard.md @@ -0,0 +1,7 @@ +# Dashboard + +Philter includes a user interface dashboard that can be accessed at `https://<Philter>:9000`. + +> The Philter UI dashboard is intended only for configuration testing. Use Philter's [API](../api_and_sdks/api.md) for document redaction. + +The dashboard provides the ability to test Philter's configuration and manage policies. Text and PDF documents can be submitted through the dashboard to analyze the redacted text and modify your filter policies. diff --git a/docs/docs/other_features/span_disambiguation.md b/docs/docs/other_features/span_disambiguation.md index 7578441..3ab53c5 100644 --- a/docs/docs/other_features/span_disambiguation.md +++ b/docs/docs/other_features/span_disambiguation.md @@ -1,20 +1,20 @@ # Span Disambiguation -Span disambiguation is an optional feature in Phileas that is disabled by default. Refer to Phileas' [Settings](settings.md#cache) to enable and configure span disambiguation. +Span disambiguation is an optional feature in Philter that is disabled by default. Refer to Philter' [Settings](../settings.md) to enable and configure span disambiguation. -In Phileas, a _span_ is a piece of the input text that Phileas has identified as sensitive information. A span has a start and end positions, a confidence, a type, and other attributes. Ideally, each piece of identified sensitive information will only have a single span associated with it. In this case, the type of sensitive information is unambiguous. The goal of span disambiguation is provide more accurate filtering by removing the potential ambiguities in the types of sensitive information for duplicate spans. +In Philter, a _span_ is a piece of the input text that Philter has identified as sensitive information. A span has a start and end positions, a confidence, a type, and other attributes. Ideally, each piece of identified sensitive information will only have a single span associated with it. In this case, the type of sensitive information is unambiguous. The goal of span disambiguation is to provide more accurate filtering by removing the potential ambiguities in the types of sensitive information for duplicate spans. -However, sometimes a piece of text can be identified by multiple spans, each having a different type of sensitive information. In an example hypothetical scenario, let's say given the input text `My SSN is 123456789.` , Phileas identifies `123456789` as an SSN and as a phone number. This type of scenario can be quite common, and its likelihood increases as the number of enabled filters in a policy increase. +However, sometimes a piece of text can be identified by multiple spans, each having a different type of sensitive information. In an example hypothetical scenario, let's say given the input text `My SSN is 123456789.` , Philter identifies `123456789` as an SSN and as a phone number. This type of scenario can be quite common, and its likelihood increases as the number of enabled filters in a policy increase. -### How Phileas' Span Disambiguation Works +### How Philter' Span Disambiguation Works When we read the sentence `My SSN is 123456789.` we can tell the span in question should be identified as an SSN because we can look at the text surrounding the span. We use the surrounding words to deduce the correct type of sensitive information for `123456789`. -That is exactly how Phileas' span disambiguation works. When presented with identical spans differing only by the type of sensitive information, Phileas looks at the text surrounding the span in question in combination with the previous spans it has seen in the same context to determine which type of sensitive information is most likely to be correct. Phileas then removes the ambiguous spans from the results and replaces them with a single span. +That is exactly how Philter' span disambiguation works. When presented with identical spans differing only by the type of sensitive information, Philter looks at the text surrounding the span in question in combination with the previous spans it has seen in the same context to determine which type of sensitive information is most likely to be correct. Philter then removes the ambiguous spans from the results and replaces them with a single span. ### Improves Over Time -Because Phileas is able to consider previously seen text to make its decision concerning ambiguous spans, Phileas' span disambiguation gets "smarter" as more text is filtered. This is because Phileas will have more text to consider in its calculations. +Because Philter is able to consider previously seen text to make its decision concerning ambiguous spans, Philter' span disambiguation gets "smarter" as more text is filtered. This is because Philter will have more text to consider in its calculations. ### More Details @@ -24,7 +24,7 @@ Span disambiguation is only invoked for spans that differ only by the type of se #### Cache Service -When multiple application using Phileas are deployed alongside each other behind a load balancer, Phileas' [cache service](settings.md#cache) should be configured and enabled. Phileas will store the information needed to disambiguate spans in the cache such that the information is available to each instance of Phileas. If only a single instance of Phileas is running then the cache service is not required, however, the information needed to disambiguate spans will be stored in memory and will be lost when Phileas is stopped or restarted. Because of this, we recommend the cache service always be used unless there is a specific reason not to. +When multiple application using Philter are deployed alongside each other behind a load balancer, Philter' [cache service](../settings.md) should be configured and enabled. Philter will store the information needed to disambiguate spans in the cache such that the information is available to each instance of Philter. If only a single instance of Philter is running then the cache service is not required, however, the information needed to disambiguate spans will be stored in memory and will be lost when Philter is stopped or restarted. Because of this, we recommend the cache service always be used unless there is a specific reason not to. #### Fine-Tuning the Span Disambiguation diff --git a/docs/docs/pii_phi_nppi.md b/docs/docs/pii_phi_nppi.md new file mode 100644 index 0000000..e9146b5 --- /dev/null +++ b/docs/docs/pii_phi_nppi.md @@ -0,0 +1,34 @@ +# PII, PHI, and NPPI + +Philter can redact many predefined types of sensitive information through [filters](policies/filters.md). Each type of predefined sensitive information is described below. + +* Personally identifiable information (PII) is any information that could potentially be used to identify a specific person. +* Protected health information (PHI) is any information about health status, provision of health care, or payment for health care that can be linked to an individual. The Health Insurance Portability And Accountability Act (HIPAA) defines 18 types of PHI. +* Non-public personal information (NPPI) is any information not publicly available about an individual. + +## Predefined Types of PII in Philter + +The types of sensitive information that Philter will identify is customizable. For example, if you are not interested in VIN numbers you can have Philter ignore them. This configuration is performed through [Policies](policies_README.md). + +Because Philter only operates on text, the biometric identifiers and face images outlined in the HIPAA regulations as PHI are not applicable to Philter. The types of sensitive information and how Philter identifies each one is listed in the table below. + +| | Type of PHI | How Philter Identifies It | +| -- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | <p><strong>Names</strong></p><p>Ex: John Smith, Jane Doe</p> | <ul><li>Philter identifies names in natural language text using state of the art machine learning algorithms and natural language processing techniques to identify named-person entities.</li><li>Philter also uses common first name and surname dictionaries with spellcheck capability to identify common names per the US census.</li></ul> | +| 2 | <p>All <strong>geographical identifiers</strong> smaller than a state, except for the initial three digits of a zip code if, according to the current publicly available data from the U.S. Bureau of the Census: the geographic unit formed by combining all zip codes with the same three initial digits contains more than 20,000 people; and the initial three digits of a zip code for all such geographic units containing 20,000 or fewer people is changed to 000</p><p>Ex: 85055, 90213-1544</p> | <ul><li>Philter can identify many US cities, US counties, and all US states (full names and abbreviations).</li><li>Philter uses a dictionary with spelling correction to identify misspelled locations.</li><li>Filter conditions in policies can be used to apply logic based on zip code population according to the US census. (Filter strategies can truncate the zip code.)</li><li>Philter also uses state of the art machine learning algorithms and natural language processing techniques to identify locations.</li><li>Philter includes a dictionary of some hospital locations to quickly identify medical locations.</li></ul> | +| 3 | <p><strong>Dates (other than year) directly related to an individual</strong></p><p>Ex: 10-10-2000. 10/10/2000, October 10, 2000</p> | <ul><li>Philter can identify dates in many formats such as with hypens (10-10-2000), with slashes (10/10/2000), or spelled out (May 1, 2000).</li><li>Philter can also identify ages, e.g. 57 years, 57yrs.</li></ul> | +| 4 | <p><strong>Phone Numbers</strong></p><p>Ex: (304) 555-5555, 304-555-5555, 1-800-123-4567</p> | <ul><li>Philter can identify phone numbers in many formats. (Philter is currently limited to US phone numbers.)</li></ul> | +| 5 | <p><strong>Fax numbers</strong></p><p>Ex: (304) 555-5555, 304-555-5555, 1-800-123-4567</p> | <ul><li>Philter can identify fax numbers in many formats. (Philter is currently limited to US phone numbers.)</li></ul> | +| 6 | <p><strong>Email addresses</strong></p><p>Ex: john.fake.address@hotmail.com</p> | <ul><li>Philter can identify email addresses per the email standard (summarized on <a href="https://en.wikipedia.org/wiki/Email_address">Wikipedia</a>).</li></ul> | +| 7 | <p><strong>Social Security numbers</strong></p><p>Ex: 123-45-6789, 123456789</p> | <ul><li>Philter can identify social security numbers (SSNs) in multiple formats such as with spaces and hyphens.</li></ul> | +| 8 | <p><strong>Medical record numbers</strong></p><p>Ex: 86637729, AB473-6021, 473-6AB021</p> | <ul><li>Philter can identify alphanumeric identifiers.</li></ul> | +| 9 | <p><strong>Health insurance beneficiary numbers</strong></p><p>Ex: 86637729, AB473-6021, 473-6AB021</p> | <ul><li>Philter can identify alphanumeric identifiers.</li></ul> | +| 10 | <p><strong>Account numbers</strong></p><p>Ex: 86637729, AB473-6021, 473-6AB021</p> | <ul><li>Philter can identify alphanumeric identifiers, as well as credit card numbers from all major types of credit cards.</li></ul> | +| 11 | <p><strong>Certificate/license numbers</strong></p><p>Ex: 86637729, AB473-6021, 473-6AB021</p> | <ul><li>Philter can identify alphanumeric identifiers.</li></ul> | +| 12 | <p><strong>Vehicle identifiers and serial numbers, including license plate numbers</strong></p><p>Ex: WBAPM7G50ANL19218, 1GBJC34K3RE176005</p> | <ul><li>Philter can identify vehicle serial numbers (17-character VIN numbers). License plates will be identified as alphanumeric identifiers.</li></ul> | +| 13 | <p><strong>Device identifiers and serial numbers</strong></p><p>Ex: H3SNPUHYEE7JD3H, 33778376</p> | <ul><li>Philter can identify alphanumeric identifiers.</li></ul> | +| 14 | <p><strong>Web Uniform Resource Locators (URLs)</strong></p><p>Ex: myhomepage.com, http://myhomepage.com/folder/page.html, www.myhomepage.com/folder/page.html</p> | <ul><li>Philter can identify URLs adhering to the URL naming standard.</li></ul> | +| 15 | <p><strong>Internet Protocol (IP) address numbers</strong></p><p>Ex: 127.0.0.1, 192.168.3.58, 2001:0db8:85a3:0000:0000:8a2e:0370:7334</p> | <ul><li>Philter can identify IPv4 and IPv6 addresses.</li></ul> | +| 16 | Biometric identifiers, including finger, retinal and voice prints | <ul><li>Not applicable – Philter only identifies PHI in text.</li></ul> | +| 17 | Full face photographic images and any comparable images | <ul><li>Not applicable – Philter only identifies PHI in text.</li></ul> | +| 18 | <p><strong>Any other unique identifying number, characteristic, or code except the unique code assigned by the investigator to code the data</strong></p><p>Ex: 86637729, AB473-6021, 473-6AB021</p> | <ul><li>Philter can identify alphanumeric identifiers.</li></ul> | diff --git a/docs/docs/policies/document_analysis.md b/docs/docs/policies/document_analysis.md new file mode 100644 index 0000000..6e8c71c --- /dev/null +++ b/docs/docs/policies/document_analysis.md @@ -0,0 +1,30 @@ +# Document Analysis + +Philter analyzes received documents prior to redacting the document. This analysis is done to help Philter get a better understanding of the document. The results of the analysis are used to [exclude certain document types from redaction](excluding_by_document_type.md) and to improve Philter's redaction performance. + +While not recommended, the automatic document analysis can be disabled in a policy. By default, document analysis is enabled. + +> Disabling document analysis will cause any policy features dependent on the results of the document analysis to not function. + +An example policy with disabled document analysis is shown below. + +``` +{ + "name": "email-and-phone-numbers", + "config": { + "analysis": { + "enabled": false + } + }, + "identifiers": { + "emailAddress": { + "emailAddressFilterStrategies": [ + { + "strategy": "REDACT", + "redactionFormat": "{{{REDACTED-%t}}}" + } + ] + } + } +} +``` diff --git a/docs/docs/policies/excluding_by_document_type.md b/docs/docs/policies/excluding_by_document_type.md new file mode 100644 index 0000000..9f6dac9 --- /dev/null +++ b/docs/docs/policies/excluding_by_document_type.md @@ -0,0 +1,43 @@ +# Excluding by Document Type + +Philter can automatically detect certain types of documents and exclude those documents from redaction of certain sensitive information. For example, you want to redact SSN/TINs in all but one type of document. + +To exclude a document type from a specific filter, set the `excludeDocumentTypes` value to a list of document types to exclude for a filter strategy. Filter strategies for all filter types support the `excludeDocumentTypes` property. + +An example to exclude email addresses from being redacted in a subpoena document is given below: + +``` +{ + "name": "email-address", + "identifiers": { + "emailAddress": { + "emailAddressFilterStrategies": [ + { + "strategy": "REDACT", + "redactionFormat": "{{{REDACTED-%t}}}", + "excludeDocumentTypes": ["SUBPOENA"] + } + ] + } + } +} +``` + +In this example, email addresses are redacted in all document types except documents Philter identifies as being subpoena documents. + +### Document Types Supported by Automatic Detection + +Philter currently supports automatically detecting the following document types. + +| Document Type | Document Description | +| ------------- | ------------------------------------------------------------------------------ | +| Subpoena | Form 2540 Federal Bankruptcy - SUBPOENA FOR RULE 2004 EXAMINATION | +| Subpoena | Form 2550 - Federal Bankruptcy - SUBPOENA TO APPEAR AND TESTIFY | +| Subpoena | Form 2560 - Federal Bankruptcy - SUBPOENA TO TESTIFY AT A DEPOSITION | +| Subpoena | Form 2570 - Federal Bankruptcy - SUBPOENA TO PRODUCE DOCUMENTS | +| Subpoena | AO 88 - SUBPOENA TO APPEAR AND TESTIFY AT A HEARING OR TRIAL IN A CIVIL ACTION | +| Subpoena | AO 88A - SUBPOENA TO TESTIFY AT A DEPOSITION IN A CIVIL ACTION | +| Subpoena | AO 88B - SUBPOENA TO PRODUCE DOCUMENTS, INFORMATION, OR OBJECTS | +| Subpoena | AO 89 - SUBPOENA TO TESTIFY AT A HEARING OR TRIAL IN A CRIMINAL CASE | +| Subpoena | AO 90 - SUBPOENA TO TESTIFY AT A DEPOSITION IN A CRIMINAL CASE | +| Subpoena | AO 110 - SUBPOENA TO TESTIFY BEFORE A GRAND JURY | diff --git a/docs/docs/filter_policies/filter_policies.md b/docs/docs/policies/filter_policies.md similarity index 97% rename from docs/docs/filter_policies/filter_policies.md rename to docs/docs/policies/filter_policies.md index 1974523..2e577ec 100644 --- a/docs/docs/filter_policies/filter_policies.md +++ b/docs/docs/policies/filter_policies.md @@ -4,7 +4,7 @@ The types of sensitive information identified by Phileas and how that informatio Each policy has a `name` that is used by Phileas to apply the appropriate de-identification methods. The `name` is passed to Phileas’s [API](filtering-api.md) along with the text to be filtered when submitting text to Phileas. This provides flexibility and allows you to de-identify different types of documents in differing manners with a single instance of Phileas. For example, you may have a policy for bankruptcy documents and a separate policy for financial documents. -> There are [sample policies](sample_filter_policies.md) available for immediate use or customization to fit your use-cases. +> There are [sample policies](sample_policies) available for immediate use or customization to fit your use-cases. ### The Structure of a Policy diff --git a/docs/docs/filter_policies/filter_strategies.md b/docs/docs/policies/filter_strategies.md similarity index 91% rename from docs/docs/filter_policies/filter_strategies.md rename to docs/docs/policies/filter_strategies.md index 69052f8..a397303 100644 --- a/docs/docs/filter_policies/filter_strategies.md +++ b/docs/docs/policies/filter_strategies.md @@ -1,12 +1,11 @@ # Filter Strategies -A filter strategy defines how sensitive information identified by Phileas should be manipulated, whether it is redacted, replaced, encrypted, or manipulated in some other fashion. +A filter strategy defines how sensitive information identified by Philter should be manipulated, whether it is redacted, replaced, encrypted, or manipulated in some other fashion. -In a policy, you list the types of sensitive information that should be filtered. How Phileas replaces each type of sensitive information is specific to each type. For instance, zip codes can be truncated based on the leading digits or zip code population while phone numbers are redacted. These replacements are performed by "filter strategies." +In a policy, you list the types of sensitive information that should be filtered. How Philter replaces each type of sensitive information is specific to each type. For instance, zip codes can be truncated based on the leading digits or zip code population while phone numbers are redacted. These replacements are performed by "filter strategies." > Each filter can have one or more filter strategies and conditions can be used to determine when to apply each filter strategy. - A sample policy containing a filter strategy is shown below. In this example, email addresses will be redacted. ``` @@ -30,7 +29,7 @@ A sample policy containing a filter strategy is shown below. In this example, em ## Filter Strategies -The filter strategies are described below. Each filter type can specify zero or more filter strategies. When no filter strategies are given, Phileas will default to `REDACT` for that filter type. When multiple filter strategies are given for a single filter type, the filter strategies will be applied in order as they are listed in the policy, top to bottom. +The filter strategies are described below. Each filter type can specify zero or more filter strategies. When no filter strategies are given, Philter will default to `REDACT` for that filter type. When multiple filter strategies are given for a single filter type, the filter strategies will be applied in order as they are listed in the policy, top to bottom. * [`REDACT`](filter-strategies.md#the-redact-filter-strategy) * [`CRYPTO_REPLACE`](filter-strategies.md#crypto)(AES encryption) @@ -43,7 +42,7 @@ The filter strategies are described below. Each filter type can specify zero or ### The `REDACT` Filter Strategy -The REDACT filter strategy replaces sensitive information with a given redaction format. You can put variables in the redaction format that Phileas will replace when performing the redaction. +The REDACT filter strategy replaces sensitive information with a given redaction format. You can put variables in the redaction format that Philter will replace when performing the redaction. The available redaction variables are: @@ -73,7 +72,7 @@ An example filter using the `REDACT` filter strategy: } ``` -### The `CRYPTO_REPLACE` Filter Strategy {id="crypto"} +### The `CRYPTO_REPLACE` Filter Strategy The `CRYPTO_REPLACE` filter strategy replaces each identified piece of sensitive information by encrypting it using the AES encryption algorithm. To use this filter strategy, the policy must include the details of the encryption key as shown below: @@ -87,7 +86,7 @@ The `CRYPTO_REPLACE` filter strategy replaces each identified piece of sensitive ... ``` -In the snippet of a policy shown above, a crypto element is is defined with a `key` and an initialization vector (`iv`). These two items are required to encrypt the sensitive information. To generate a key, run the following command: +In the snippet of a policy shown above, a crypto element is defined with a `key` and an initialization vector (`iv`). These two items are required to encrypt the sensitive information. To generate a key, run the following command: ``` openssl enc -e -aes-256-cbc -a -salt -P @@ -116,9 +115,9 @@ An example policy using the `CRYPTO_REPLACE` filter strategy: } ``` -### The `HASH_SHA256_REPLACE` Filter Strategy {id="hash"} +### The `HASH_SHA256_REPLACE` Filter Strategy -The `HASH_SHA256_REPLACE` filter strategy replaces sensitive information with the SHA256 hash value of the sensitive information. To append a random salt value to each value prior to hashing, set the `salt` property to `true`. The salt value used will be returned in the `explain` response from Phileas' API. +The `HASH_SHA256_REPLACE` filter strategy replaces sensitive information with the SHA256 hash value of the sensitive information. To append a random salt value to each value prior to hashing, set the `salt` property to `true`. The salt value used will be returned in the `explain` response from Philter' API. An example policy using the `HASH_SHA256_REPLACE` filter strategy: @@ -137,9 +136,9 @@ An example policy using the `HASH_SHA256_REPLACE` filter strategy: } ``` -### The FPE\_ENCRYPT\_REPLACE Filter Strategy {id="fpe"} +### The FPE\_ENCRYPT\_REPLACE Filter Strategy -The `FPE_ENCRYPT_REPLACE` filter strategy uses format-preserving encryption (FPE) to encrypt the sensitive information. Phileas uses the FF3-1 algorithm for format-preserving encryption. The FPE\_ENCRYPT\_REPLACE filter strategy requires a `key` and a `tweak` value. These values control the format-preserving encryption. For more information on these values and format-preserving encryption, refer to the resources below: +The `FPE_ENCRYPT_REPLACE` filter strategy uses format-preserving encryption (FPE) to encrypt the sensitive information. Philter uses the FF3-1 algorithm for format-preserving encryption. The FPE\_ENCRYPT\_REPLACE filter strategy requires a `key` and a `tweak` value. These values control the format-preserving encryption. For more information on these values and format-preserving encryption, refer to the resources below: * [https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-38Gr1-draft.pdf](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-38Gr1-draft.pdf) * [https://nvlpubs.nist.gov/nistpubs/specialpublications/nist.sp.800-38g.pdf](https://nvlpubs.nist.gov/nistpubs/specialpublications/nist.sp.800-38g.pdf) @@ -163,7 +162,7 @@ An example policy using the FPE\_ENCRYPT\_REPLACE filter strategy: } ``` -### The `RANDOM_REPLACE` Filter Strategy {id="random"} +### The `RANDOM_REPLACE` Filter Strategy Replaces the identified text with a fake value but of the same type. For example, an SSN will be replaced by a random text having the format `###-##-####`, such as 123-45-6789. An email address will be replaced with a randomly generated email address. Available to all filter types. @@ -184,7 +183,7 @@ An example policy using the `RANDOM_REPLACE` filter strategy: } ``` -### The `STATIC_REPLACE` Filter Strategy {id="static"} +### The `STATIC_REPLACE` Filter Strategy Replaces the identified text with a given static value. Available to all filter types. @@ -206,7 +205,7 @@ An example policy using the `STATIC_REPLACE` filter strategy: } ``` -### The `TRUNCATE` Filter Strategy {id="truncate"} +### The `TRUNCATE` Filter Strategy Available only to zip codes, this strategy allows for truncating zip codes to only a select number of digits. Specify `truncateDigits` to set the desired number of leading digits to leave. For example, if `truncateDigits` is 2, the zip code 90210 will be truncated to `90***`.  @@ -228,7 +227,7 @@ The TRUNCATE filter strategy is available only to the zip code filter. An exampl } ``` -### The `ZERO_LEADING` Filter Strategy {id="zero_leading"} +### The `ZERO_LEADING` Filter Strategy Available only to zip codes, this strategy changes the first 3 digits of a zip code to be 0. For example, the zip code 90210 will be changed to 00010. diff --git a/docs/docs/filter_policies/filters.md b/docs/docs/policies/filters.md similarity index 100% rename from docs/docs/filter_policies/filters.md rename to docs/docs/policies/filters.md diff --git a/docs/docs/filter_policies/filters/common_filters/ages.md b/docs/docs/policies/filters/common_filters/ages.md similarity index 100% rename from docs/docs/filter_policies/filters/common_filters/ages.md rename to docs/docs/policies/filters/common_filters/ages.md diff --git a/docs/docs/filter_policies/filters/common_filters/bank-routing-numbers.md b/docs/docs/policies/filters/common_filters/bank-routing-numbers.md similarity index 100% rename from docs/docs/filter_policies/filters/common_filters/bank-routing-numbers.md rename to docs/docs/policies/filters/common_filters/bank-routing-numbers.md diff --git a/docs/docs/filter_policies/filters/common_filters/bitcoin-addresses.md b/docs/docs/policies/filters/common_filters/bitcoin-addresses.md similarity index 100% rename from docs/docs/filter_policies/filters/common_filters/bitcoin-addresses.md rename to docs/docs/policies/filters/common_filters/bitcoin-addresses.md diff --git a/docs/docs/filter_policies/filters/common_filters/creditcards.md b/docs/docs/policies/filters/common_filters/creditcards.md similarity index 100% rename from docs/docs/filter_policies/filters/common_filters/creditcards.md rename to docs/docs/policies/filters/common_filters/creditcards.md diff --git a/docs/docs/filter_policies/filters/common_filters/dates.md b/docs/docs/policies/filters/common_filters/dates.md similarity index 100% rename from docs/docs/filter_policies/filters/common_filters/dates.md rename to docs/docs/policies/filters/common_filters/dates.md diff --git a/docs/docs/filter_policies/filters/common_filters/drivers-license-numbers.md b/docs/docs/policies/filters/common_filters/drivers-license-numbers.md similarity index 100% rename from docs/docs/filter_policies/filters/common_filters/drivers-license-numbers.md rename to docs/docs/policies/filters/common_filters/drivers-license-numbers.md diff --git a/docs/docs/filter_policies/filters/common_filters/email-addresses.md b/docs/docs/policies/filters/common_filters/email-addresses.md similarity index 100% rename from docs/docs/filter_policies/filters/common_filters/email-addresses.md rename to docs/docs/policies/filters/common_filters/email-addresses.md diff --git a/docs/docs/filter_policies/filters/common_filters/iban-codes.md b/docs/docs/policies/filters/common_filters/iban-codes.md similarity index 100% rename from docs/docs/filter_policies/filters/common_filters/iban-codes.md rename to docs/docs/policies/filters/common_filters/iban-codes.md diff --git a/docs/docs/filter_policies/filters/common_filters/ip-addresses.md b/docs/docs/policies/filters/common_filters/ip-addresses.md similarity index 100% rename from docs/docs/filter_policies/filters/common_filters/ip-addresses.md rename to docs/docs/policies/filters/common_filters/ip-addresses.md diff --git a/docs/docs/filter_policies/filters/common_filters/mac-addresses.md b/docs/docs/policies/filters/common_filters/mac-addresses.md similarity index 100% rename from docs/docs/filter_policies/filters/common_filters/mac-addresses.md rename to docs/docs/policies/filters/common_filters/mac-addresses.md diff --git a/docs/docs/filter_policies/filters/common_filters/passport-numbers.md b/docs/docs/policies/filters/common_filters/passport-numbers.md similarity index 100% rename from docs/docs/filter_policies/filters/common_filters/passport-numbers.md rename to docs/docs/policies/filters/common_filters/passport-numbers.md diff --git a/docs/docs/filter_policies/filters/common_filters/phone-number-extensions.md b/docs/docs/policies/filters/common_filters/phone-number-extensions.md similarity index 100% rename from docs/docs/filter_policies/filters/common_filters/phone-number-extensions.md rename to docs/docs/policies/filters/common_filters/phone-number-extensions.md diff --git a/docs/docs/filter_policies/filters/common_filters/phone-numbers.md b/docs/docs/policies/filters/common_filters/phone-numbers.md similarity index 100% rename from docs/docs/filter_policies/filters/common_filters/phone-numbers.md rename to docs/docs/policies/filters/common_filters/phone-numbers.md diff --git a/docs/docs/filter_policies/filters/common_filters/sections.md b/docs/docs/policies/filters/common_filters/sections.md similarity index 100% rename from docs/docs/filter_policies/filters/common_filters/sections.md rename to docs/docs/policies/filters/common_filters/sections.md diff --git a/docs/docs/filter_policies/filters/common_filters/ssns-and-tins.md b/docs/docs/policies/filters/common_filters/ssns-and-tins.md similarity index 100% rename from docs/docs/filter_policies/filters/common_filters/ssns-and-tins.md rename to docs/docs/policies/filters/common_filters/ssns-and-tins.md diff --git a/docs/docs/filter_policies/filters/common_filters/tracking-numbers.md b/docs/docs/policies/filters/common_filters/tracking-numbers.md similarity index 100% rename from docs/docs/filter_policies/filters/common_filters/tracking-numbers.md rename to docs/docs/policies/filters/common_filters/tracking-numbers.md diff --git a/docs/docs/filter_policies/filters/common_filters/urls.md b/docs/docs/policies/filters/common_filters/urls.md similarity index 100% rename from docs/docs/filter_policies/filters/common_filters/urls.md rename to docs/docs/policies/filters/common_filters/urls.md diff --git a/docs/docs/filter_policies/filters/common_filters/vins.md b/docs/docs/policies/filters/common_filters/vins.md similarity index 100% rename from docs/docs/filter_policies/filters/common_filters/vins.md rename to docs/docs/policies/filters/common_filters/vins.md diff --git a/docs/docs/filter_policies/filters/common_filters/zip-codes.md b/docs/docs/policies/filters/common_filters/zip-codes.md similarity index 100% rename from docs/docs/filter_policies/filters/common_filters/zip-codes.md rename to docs/docs/policies/filters/common_filters/zip-codes.md diff --git a/docs/docs/filter_policies/filters/custom_filters/dictionary.md b/docs/docs/policies/filters/custom_filters/dictionary.md similarity index 100% rename from docs/docs/filter_policies/filters/custom_filters/dictionary.md rename to docs/docs/policies/filters/custom_filters/dictionary.md diff --git a/docs/docs/filter_policies/filters/custom_filters/identifier.md b/docs/docs/policies/filters/custom_filters/identifier.md similarity index 100% rename from docs/docs/filter_policies/filters/custom_filters/identifier.md rename to docs/docs/policies/filters/custom_filters/identifier.md diff --git a/docs/docs/filter_policies/filters/locations/cities.md b/docs/docs/policies/filters/locations/cities.md similarity index 100% rename from docs/docs/filter_policies/filters/locations/cities.md rename to docs/docs/policies/filters/locations/cities.md diff --git a/docs/docs/filter_policies/filters/locations/counties.md b/docs/docs/policies/filters/locations/counties.md similarity index 100% rename from docs/docs/filter_policies/filters/locations/counties.md rename to docs/docs/policies/filters/locations/counties.md diff --git a/docs/docs/filter_policies/filters/locations/hospital-abbreviations.md b/docs/docs/policies/filters/locations/hospital-abbreviations.md similarity index 100% rename from docs/docs/filter_policies/filters/locations/hospital-abbreviations.md rename to docs/docs/policies/filters/locations/hospital-abbreviations.md diff --git a/docs/docs/filter_policies/filters/locations/hospitals.md b/docs/docs/policies/filters/locations/hospitals.md similarity index 100% rename from docs/docs/filter_policies/filters/locations/hospitals.md rename to docs/docs/policies/filters/locations/hospitals.md diff --git a/docs/docs/filter_policies/filters/locations/state-abbreviations.md b/docs/docs/policies/filters/locations/state-abbreviations.md similarity index 100% rename from docs/docs/filter_policies/filters/locations/state-abbreviations.md rename to docs/docs/policies/filters/locations/state-abbreviations.md diff --git a/docs/docs/filter_policies/filters/locations/states.md b/docs/docs/policies/filters/locations/states.md similarity index 100% rename from docs/docs/filter_policies/filters/locations/states.md rename to docs/docs/policies/filters/locations/states.md diff --git a/docs/docs/filter_policies/filters/persons_names/first-names.md b/docs/docs/policies/filters/persons_names/first-names.md similarity index 100% rename from docs/docs/filter_policies/filters/persons_names/first-names.md rename to docs/docs/policies/filters/persons_names/first-names.md diff --git a/docs/docs/filter_policies/filters/persons_names/persons-names-ner.md b/docs/docs/policies/filters/persons_names/persons-names-ner.md similarity index 100% rename from docs/docs/filter_policies/filters/persons_names/persons-names-ner.md rename to docs/docs/policies/filters/persons_names/persons-names-ner.md diff --git a/docs/docs/filter_policies/filters/persons_names/physician-names-ner.md b/docs/docs/policies/filters/persons_names/physician-names-ner.md similarity index 100% rename from docs/docs/filter_policies/filters/persons_names/physician-names-ner.md rename to docs/docs/policies/filters/persons_names/physician-names-ner.md diff --git a/docs/docs/filter_policies/filters/persons_names/surnames.md b/docs/docs/policies/filters/persons_names/surnames.md similarity index 100% rename from docs/docs/filter_policies/filters/persons_names/surnames.md rename to docs/docs/policies/filters/persons_names/surnames.md diff --git a/docs/docs/filter_policies/ignoring_sensitive_information.md b/docs/docs/policies/ignoring_specific_information.md similarity index 99% rename from docs/docs/filter_policies/ignoring_sensitive_information.md rename to docs/docs/policies/ignoring_specific_information.md index fc4161e..24c8e0b 100644 --- a/docs/docs/filter_policies/ignoring_sensitive_information.md +++ b/docs/docs/policies/ignoring_specific_information.md @@ -1,10 +1,9 @@ -# Ignoring Sensitive Information +# Ignoring Specific Information Phileas can optionally ignore a list of terms and prevent those terms from being redacted. For example, if the name `John Smith` is being redacted and you do not want it to be redacted, you can add `John Smith` to an ignore list. Each time Phileas identifies sensitive information it will check the ignore lists to see if the sensitive information is to be ignored. > Phileas can ignore terms and patterns per-policy, meaning each policy can have its own unique list of terms or patterns to ignore. - ## Ignore Lists Ignore lists can be specified at the policy level and/or for each filter in the policy. When set for the policy, the list of ignored terms will be applied to _all_ filter types. When set for a filter, the list of ignored terms will be applied _only_ to that filter. diff --git a/docs/docs/filter_policies/sample_filter_policies.md b/docs/docs/policies/sample_policies.md similarity index 99% rename from docs/docs/filter_policies/sample_filter_policies.md rename to docs/docs/policies/sample_policies.md index c6561ae..0ef4d1a 100644 --- a/docs/docs/filter_policies/sample_filter_policies.md +++ b/docs/docs/policies/sample_policies.md @@ -2,7 +2,7 @@ This page lists some sample policies. You can use these policies either as-is or as starting points for customizing them to meet your specific de-identification needs. -<!--To use a policy, download the policy to Phileas' `policies` directory, which by default is `/opt/Phileas/policies`. Then restart Phileas with `sudo systemctl restart Phileas`. The new policy will now be available for use when submitting filter API requests to Phileas. (Specify the policy's name in the request. See the [API](filtering-api.md) for examples.)--> +<!--To use a policy, download the policy to Phileas' `policies` directory, which by default is `/opt/Phileas/policies`. Then restart Phileas with `sudo systemctl restart Phileas`. The new policy will now be available for use when submitting filter API requests to Phileas. (Specify the policy's name in the request. See the [API](filtering_api.md) for examples.)--> > These policies are examples and not an exhaustive list of all the sensitive information Phileas can identify. Items from each of these policies can be combined to make policies to meet your use-cases. diff --git a/docs/docs/policies/splitting_input_text.md b/docs/docs/policies/splitting_input_text.md new file mode 100644 index 0000000..9fc1ac4 --- /dev/null +++ b/docs/docs/policies/splitting_input_text.md @@ -0,0 +1,51 @@ +# Splitting Input Text + +On a per-policy basis, Philter can split input text to process each split individually. This can improve performance and allows for handling long input text. Splitting is disabled by default. + +An example split configuration in a policy is shown below + +``` +{ + "name": "default", + "identifiers": {}, + "config": { + "splitting": { + "enabled": true, + "threshold": 10000, + "method": "newline" + } + } +} +``` + +In this example policy, splitting is enabled for inputs greater than equal to 10,000 characters in length. + +The method of splitting the text will be the `newline` method. This method will cause Philter to split the text based on the locations of new line characters in the input text. Additional methods of text splitting may be added in future versions. + +Because the newline method splits text based on the locations of new line characters in the text, the text contained in the reassembled filter responses may not be an exact match of the input text. This is due to white space and other characters that may reside near the new line characters that get omitted during processing. + +### Text Splitting Policy Properties + +| Property | Description | Allowed Values | Default Value | +| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------ | ------------- | +| `enabled` | Whether or not input texts are split. Whether or not input texts are split. When `false`, requests with text exceeding the threshold generate a `HTTP 413 PayloadTooLarge` error response. | `true` or `false` | `false` | +| `threshold` | When to split the input text. Set to `-1` to disable splitting. | Any integer value. | `10000` | +| `method` | How to split the text. | `newline` | `newline` | + +### Alternative to Philter Splitting Text + +In some cases it may be best to split your input text client side prior to sending the text to Philter. This gives you full control over how the text will be split and provides more predictable responses from Philter because you know how the text is split. + +An example of splitting text into chunks prior to sending the text to Philter is given in the commands below: + +``` +# Given a large file called largefile.txt, split it into 10k pieces. +$ split -b 10k largefile.txt segment + +# Now process the pieces. +$ curl -s -X POST -k "https://philter:8080/api/filter?d=document1" --data "@/tmp/segmentaa" -H "Content-type: text/plain" > out1 +$ curl -s -X POST -k "https://philter:8080/api/filter?d=document1" --data "@/tmp/segmentab" -H "Content-type: text/plain" > out2 + +# Now recombine the outputs into a single file. +$ cat out1 out2 > filtered.txt +``` diff --git a/docs/docs/quick_starts/quick_start_aws.md b/docs/docs/quick_starts/quick_start_aws.md new file mode 100644 index 0000000..ddf7dca --- /dev/null +++ b/docs/docs/quick_starts/quick_start_aws.md @@ -0,0 +1,56 @@ +# Philter Quick Start on AWS + +Philter on AWS is a virtual machine-based product. It runs in EC2 on its own EC2 instance. A free trial period is available during which there is no charge for the Philter software but there may be charges for the underlying AWS infrastructure. + +> Cloud virtual machines launched from a cloud marketplace may not be immediately suitable for a HIPAA environment. Refer to your compliance officer for your organization's requirements to ensure compliance with all relevant regulations. + +Here’s a brief [screencast](https://youtu.be/E5eMC1DFw5Q) showing how to launch Philter in AWS. + +## Launch Philter in AWS + +1. Go to [Philter in the AWS Marketplace](https://aws.amazon.com/marketplace/pp/B07YVB8FFT?ref=_ptnr_mf_launch). On this page you can see the Philter overview, the pricing, and the supported EC2 instance types. +2. Select an instance type. We recommend `m5.large`. The smaller instance types are intended only for testing and are not well-suited for production usage. +3. Click the **Continue to Subscribe** button. +4. View and accept Philter’s license agreement. Then click **Accept Terms**. +5. The subscription will now be created and you will be notified when it is ready! This usually only takes less than a minute. +6. Click the **Continue to Configuration** button to select the AMI, the version, and the region. We recommend using the newest version if multiple are available. +7. Click the **Continue to Launch** button to launch Philter in your AWS account! + +> AWS will automatically open ports `22` (SSH) and `8080` (Philter API) for the Philter instance's security group. These ports are required to be open but you may want to modify the security groups to limit their scope of availability by restricting access to specific CIDR ranges. + + +Congratulations! You have deployed Philter in AWS. You are now ready to filter text! + +## Try it out! + +With Philter now running we can take it for a spin. We will send some text to Philter and inspect at the response we get back. The Philter virtual machine running in your cloud account should have a public IP address (unless you customized the deployment). We will use that public IP address to interact with Philter. + +Philter, by default, will be configured with an HTTPS listener on port 8080 using a self-signed certificate. It is recommended that prior to use in a production environment the self-signed certificate is replaced by a valid certificate owned by your organization. + +In the command below, replace `<PUBLIC_IP>` with the virtual machine’s public IP address or public host name. + +``` +curl -k -X POST https://<PUBLIC_IP>:8080/api/filter --data "George Washington was a patient and his SSN is 123-45-6789." -H "Content-type: text/plain" +``` + +With this command we are sending the text in the command to Philter for filtering. Philter will identify the patient name (George Washington) and the SSN (123-45-6789) and redact those values in the response. You can always use curl to send text to Philter as in these examples but there are also [SDKs](../api_and_sdks/sdks.md) you can use, too, to integrate Philter with your applications. + +### Redacting Sensitive Information from Text + +The types of sensitive information that Philter identifies and removes is controlled by policies. By default, Philter includes a filter profile that includes many of the types of sensitive information, such as names and social security numbers. We can send text to filter to Philter for filtering using this default filter profile with the following command: + +``` +curl -k -X POST https://localhost:8080/api/filter -d @file.txt -H "Content-Type: text/plain" +``` + +This command sends the contents of the file `file.txt` to Philter. Philter will apply the enabled filters and return a plain-text response consisting of the filtered text. (Replace localhost with the IP address or host name of Philter if you are not running the command where Philter is running.) You can also send text directly in the request instead of sending it as a file: + +``` +curl -k -X POST https://localhost:8080/api/filter --data "Your text goes here..." -H "Content-type: text/plain" +``` + +## Next Steps + +Now that you have Philter running and know how to send text to it, you are ready to integrate Philter into your existing workflow and systems. Philter’s API details how to send files to Philter. Clients for some languages for Philter’s API are available on GitHub. + +> Be sure to check out [Policies](../policies/filter_policies.md) to see how you can customize the types of sensitive information Philter redacts! diff --git a/docs/docs/quick_starts/quick_start_azure.md b/docs/docs/quick_starts/quick_start_azure.md new file mode 100644 index 0000000..fc61a18 --- /dev/null +++ b/docs/docs/quick_starts/quick_start_azure.md @@ -0,0 +1,57 @@ +# Philter Quick Start on Microsoft Azure + +Philter on Microsoft Azure is a virtual machine-based product. A free trial period is available during which there is no charge for the Philter software but there may be charges for the underlying Azure infrastructure. + +> Cloud virtual machines launched from a cloud marketplace may not be immediately suitable for a HIPAA environment. Refer to your compliance officer for your organization's requirements to ensure compliance with all relevant regulations. + + +## Launch Philter on Microsoft Azure + +1. Go to [Philter in the Azure Marketplace](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/philterdllc1687189098111.philter?tab=Overview). +2. Click the **Get It Now** button. +3. Review the information that is shown on the popup and click **Continue** when ready. +4. You will now be asked to log in to your Microsoft Azure account if you were not already logged in. +5. Click the **Create** button to begin making a Philter virtual machine. +6. Enter the required details of the virtual machine and click the **Review + create** button. +7. Review the virtual machine details and click **Create** when ready! + +Your Philter virtual machine will now be launching. + +> Microsoft Azure will automatically open ports `22` (SSH) and `8080` (Philter API). These ports are required to be open but you may want to modify the security groups to limit their scope of availability by restricting access to specific CIDR ranges. + + +Congratulations! You have deployed Philter in Azure. You are now ready to filter text! + +## Try it out! + +With Philter now running we can take it for a spin. We will send some text to Philter and inspect at the response we get back. The Philter virtual machine running in your cloud account should have a public IP address (unless you customized the deployment). We will use that public IP address to interact with Philter. + +Philter, by default, will be configured with an HTTPS listener on port 8080 using a self-signed certificate. It is recommended that prior to use in a production environment the self-signed certificate is replaced by a valid certificate owned by your organization. + +In the command below, replace `<PUBLIC_IP>` with the virtual machine’s public IP address or public host name. + +``` +curl -k -X POST https://<PUBLIC_IP>:8080/api/filter --data "George Washington was a patient and his SSN is 123-45-6789." -H "Content-type: text/plain" +``` + +With this command we are sending the text in the command to Philter for filtering. Philter will identify the patient name (George Washington) and the SSN (123-45-6789) and redact those values in the response. You can always use curl to send text to Philter as in these examples but there are also [SDKs](../api_and_sdks/sdks.md) you can use, too, to integrate Philter with your applications. + +### Redacting Sensitive Information from Text + +The types of sensitive information that Philter identifies and removes is controlled by policies. By default, Philter includes a filter profile that includes many of the types of sensitive information, such as names and social security numbers. We can send text to filter to Philter for filtering using this default filter profile with the following command: + +``` +curl -k -X POST https://localhost:8080/api/filter -d @file.txt -H "Content-Type: text/plain" +``` + +This command sends the contents of the file `file.txt` to Philter. Philter will apply the enabled filters and return a plain-text response consisting of the filtered text. (Replace localhost with the IP address or host name of Philter if you are not running the command where Philter is running.) You can also send text directly in the request instead of sending it as a file: + +``` +curl -k -X POST https://localhost:8080/api/filter --data "Your text goes here..." -H "Content-type: text/plain" +``` + +## Next Steps + +Now that you have Philter running and know how to send text to it, you are ready to integrate Philter into your existing workflow and systems. Philter’s API details how to send files to Philter. Clients for some languages for Philter’s API are available on GitHub. + +> Be sure to check out [Policies](../policies/filter_policies.md) to see how you can customize the types of sensitive information Philter redacts! diff --git a/docs/docs/quick_starts/quick_start_gcp.md b/docs/docs/quick_starts/quick_start_gcp.md new file mode 100644 index 0000000..83ec017 --- /dev/null +++ b/docs/docs/quick_starts/quick_start_gcp.md @@ -0,0 +1,56 @@ +# Philter Quick Start on Google Cloud + +Philter on Google Cloud is a virtual machine-based product. A free trial period is available during which there is no charge for the Philter software but there may be charges for the underlying Google Cloud infrastructure. + +> Cloud virtual machines launched from a cloud marketplace may not be immediately suitable for a HIPAA environment. Refer to your compliance officer for your organization's requirements to ensure compliance with all relevant regulations. + + +## Launch Philter in Google Cloud + +1. Go to [Philter in the Google Cloud Marketplace](https://console.cloud.google.com/marketplace/product/philterd-public/philter). +2. Click the **Launch on Compute Engine** button. + +![Google Cloud](../img/google-cloud-marketplace-1.webp) + +**Virtual Machine Recommendations** + +The general purpose machine type is n2-standard-2 and this machine type should be adequate for most use-cases. We recommend 8 vCPUs and 8-16 GB of RAM for a production deployment. + +> Google Cloud will automatically open ports `22` (SSH) and `8080` (Philter API). These ports are required to be open but you may want to modify the security groups to limit their scope of availability by restricting access to specific CIDR ranges. + + +Congratulations! You have deployed Philter in Google Cloud. You are now ready to filter text! + +## Try it out! + +With Philter now running we can take it for a spin. We will send some text to Philter and inspect at the response we get back. The Philter virtual machine running in your cloud account should have a public IP address (unless you customized the deployment). We will use that public IP address to interact with Philter. + +Philter, by default, will be configured with an HTTPS listener on port 8080 using a self-signed certificate. It is recommended that prior to use in a production environment the self-signed certificate is replaced by a valid certificate owned by your organization. + +In the command below, replace `<PUBLIC_IP>` with the virtual machine’s public IP address or public host name. + +``` +curl -k -X POST https://<PUBLIC_IP>:8080/api/filter --data "George Washington was a patient and his SSN is 123-45-6789." -H "Content-type: text/plain" +``` + +With this command we are sending the text in the command to Philter for filtering. Philter will identify the patient name (George Washington) and the SSN (123-45-6789) and redact those values in the response. You can always use curl to send text to Philter as in these examples but there are also [SDKs](../api_and_sdks/sdks.md) you can use, too, to integrate Philter with your applications. + +### Redacting Sensitive Information from Text + +The types of sensitive information that Philter identifies and removes is controlled by policies. By default, Philter includes a filter profile that includes many of the types of sensitive information, such as names and social security numbers. We can send text to filter to Philter for filtering using this default filter profile with the following command: + +``` +curl -k -X POST https://localhost:8080/api/filter -d @file.txt -H "Content-Type: text/plain" +``` + +This command sends the contents of the file `file.txt` to Philter. Philter will apply the enabled filters and return a plain-text response consisting of the filtered text. (Replace localhost with the IP address or host name of Philter if you are not running the command where Philter is running.) You can also send text directly in the request instead of sending it as a file: + +``` +curl -k -X POST https://localhost:8080/api/filter --data "Your text goes here..." -H "Content-type: text/plain" +``` + +## Next Steps + +Now that you have Philter running and know how to send text to it, you are ready to integrate Philter into your existing workflow and systems. Philter’s API details how to send files to Philter. Clients for some languages for Philter’s API are available on GitHub. + +> Be sure to check out [Policies](../policies/filter_policies.md) to see how you can customize the types of sensitive information Philter redacts! diff --git a/docs/docs/settings.md b/docs/docs/settings.md index 26c2aa6..cbbbab4 100644 --- a/docs/docs/settings.md +++ b/docs/docs/settings.md @@ -2,7 +2,7 @@ Phileas has settings to control how it operates. The settings and how to configure each are described below. -> The configuration for the types of sensitive information that Phileas identifies are defined in [filter policies](filter_policies/filter_policies.md) outside of Phileas' configuration properties described on this page. +> The configuration for the types of sensitive information that Phileas identifies are defined in [filter policies](policies/filter_policies.md) outside of Phileas' configuration properties described on this page. ## Configuring Phileas @@ -30,7 +30,7 @@ Using environment variables to configure Phileas instead of using Phileas' setti ## Span Disambiguation -These values configure Phileas' span disambiguation feature to determine the most appropriate type of sensitive information when duplicate spans are identified. In a deployment of multiple Phileas instances, you must enable the [cache service](Settings#cache) for span disambiguation to work as expected. +These values configure Phileas' span disambiguation feature to determine the most appropriate type of sensitive information when duplicate spans are identified. In a deployment of multiple Phileas instances, you must enable the cache service for span disambiguation to work as expected. | | Description | Allowed Values | Default Value | | ----------------------------- | --------------------------------------------- | --------------- | ------------- | @@ -38,7 +38,7 @@ These values configure Phileas' span disambiguation feature to determine the mos ## Cache Service -The cache service is required to use [consistent anonymization](anonymization.md) and policies stored in Amazon S3. Phileas supports Redis as the backend cache. When Redis is not used, an in-memory cache is used instead. The in-memory cache is not recommended because all contents will be stored in memory on the local Phileas instance. +The cache service is required to use [consistent anonymization](other_features/consistent_anonymization.md) and policies stored in Amazon S3. Phileas supports Redis as the backend cache. When Redis is not used, an in-memory cache is used instead. The in-memory cache is not recommended because all contents will be stored in memory on the local Phileas instance. The cache will contain sensitive information. It is important that you take the necessary precautions to secure the cache itself and all communication between Phileas and the cache. diff --git a/docs/docs/solutions/apache-nifi-and-philter.md b/docs/docs/solutions/apache-nifi-and-philter.md new file mode 100644 index 0000000..f7e137d --- /dev/null +++ b/docs/docs/solutions/apache-nifi-and-philter.md @@ -0,0 +1,27 @@ +# Apache NiFi and Philter + +This article describes how [Philter](https://www.philterd.ai/philter/) can be used with Apache NiFi to filter sensitive information such as PII and PHI within an Apache NiFi data flow. + +Philter is available on the [AWS, Azure, and Google Cloud marketplaces](https://www.philterd.ai/philter/availability/). So, fire up an instance of Philter and let's get started using it alongside your Apache NiFi data flow! + +### Configuring Philter with Cloudera DataFlow (CDF) + +Philter is certified to work with [Cloudera DataFlow](https://www.cloudera.com/products/cdf.html) (CDF) as a custom Apache NiFi processor. There are two options for deploying Philter with CDF. + +#### Option 1 - Using Philter via its API + +In the first option, a custom NiFi processor performs redaction by communicating with an instance of Philter through Philter's API. The processor sends text to Philter for redaction and receives back the redacted text. This option requires deploying an instance of Philter alongside your Cloudera DataFlow installation. Next, get the Philter NiFi processor from [GitHub](https://github.com/mtnfog/philter-nifi). Deploy the NAR file to CDF and make it accessible to Apache NiFi. + +Configure the Philter processor by specifying the location of Philter and any other necessary connection configuration, as shown in the image below. + +For a production environment, a cluster of Philter instances deployed behind a load balancer would provide improved performance and increased availability over a single instance. + +#### Option 2 - Using Philter Embedded into NiFi + +The second option does not require an instance of Philter. Please contact us to receive a NiFi processor with all of Philter's capabilities embedded in it. This processor performs the text redaction entirely within your NiFi data flow with no external communication required. This processor is significantly more performant than the processor in the first option. When you receive the processor NAR file from us, deploy it to NiFi. + +Configure the processor as shown in the image below by specifying the name of the desired policy and filtering context: + +### Creating a Flow + +Both processors support the same transitions. The `redacted` transition contains the redacted version of the flow file's content. In the example flows shown below, the top flow uses the Philter processor utilizing Philter's API. The bottom flow uses the Philter embedded processor. As you can see, both flows are the same. The only differences are the middle processors and their individual configuration. diff --git a/docs/docs/solutions/consistent-anonymization-with-redis.md b/docs/docs/solutions/consistent-anonymization-with-redis.md new file mode 100644 index 0000000..2857e77 --- /dev/null +++ b/docs/docs/solutions/consistent-anonymization-with-redis.md @@ -0,0 +1,39 @@ +# Consistent Anonymization with Redis + +The consistent anonymization feature in [Philter](https://www.philterd.ai/philter/) ensures that filtered values are anonymized consistently across documents or contexts. When Philter is deployed in a cluster and is using consistent anonymization across contexts, a Redis cache is required. The cache stores the anonymized values so that all instances of Philter have access to the values. + +> The Redis cache will contain PHI. It is important to prepare your Redis cache such that it can contain PHI. + + +### Enabling Consistent Anonymization + +To enable consistent anonymization in Philter set the following property in Philter's configuration: + +``` +consistent.anonymization=true +consistent.anonymization.scope=context +``` + +### Configuring Redis Cache + +To enable Philter to use the Redis cache, set the following options in Philter's configuration: + +``` +anonymization.cache.service=redis +anonymization.cache.service.host=127.0.0.1 +anonymization.cache.service.port=6379 +anonymization.cache.service.ssl=true +``` + +Replace `127.0.0.1` with the IP address or host name of your Redis cache. + +> If you are using Redis on AWS ElastiCache see [ElastiCache for Redis In-Transit Encryption (TLS)](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/in-transit-encryption.html) for information on using in-transit encryption. + + +### Restart Philter + +After starting (or restarting) Philter, Philter will use the Redis cache for consistent anonymization across contexts. You can restart Philter with the command: + +``` +sudo systemctl restart philter.service +``` diff --git a/docs/docs/solutions/deploying-philter-in-a-hipaa-environment.md b/docs/docs/solutions/deploying-philter-in-a-hipaa-environment.md new file mode 100644 index 0000000..5917825 --- /dev/null +++ b/docs/docs/solutions/deploying-philter-in-a-hipaa-environment.md @@ -0,0 +1,33 @@ +# Deploying Philter in a HIPAA Environment + +> This is not intended to be a comprehensive or legal HIPAA guide so please refer to your HIPAA compliance or security officer prior to deploying and using Philter in a PHI environment. + + +The steps below outline how to configure a Philter deployment for encryption of data at rest and in motion. + +### Encryption of Data at Rest + +#### Amazon Web Services + +1. Stop the Philter EC2 instance. +2. Make an AMI of the instance. +3. Make an [encrypted copy](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/CopyingAMIs.html#ami-copy-encryption) of the Philter AMI. + +The created AMI is encrypted. EC2 instances launched from the AMI will utilize an encrypted EBS volume and all snapshots will be encrypted. Refer to the AWS documentation [Creating an Amazon EBS-Backed Linux AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html) for assistance. + +### Encryption of Data in Motion + +#### Amazon Web Services + +If launched from the Amazon Web Services, Google Cloud, or Microsoft Azure marketplace Philter's REST API will be pre-configured with a self-signed certificate. It is recommended you replace the self-signed certificate with a certificate from a trusted certificate authority. + +1. Log in to the Philter EC2 instance via SSH. (On AWS the username is `ec2-user`. On Azure the username is `centos`.) +2. Stop the Philter service: `sudo systemctl stop philter.service` +3. Edit Philter's [settings](settings.md) to utilize an SSL certificate. +4. Start the Philter service: `sudo systemctl start philter.service` +5. Connect to Philter's API and verify the connection succeeds: `curl https://philter:8080/api/status` and returns `HTTP 200 OK`. + +### Related Links + +* [HIPAA Compliance in Amazon Web Services](https://aws.amazon.com/compliance/hipaa-compliance/) +* [Microsoft and HIPAA and HITECH Act](https://www.microsoft.com/en-us/trustcenter/compliance/hipaa) diff --git a/docs/docs/solutions/deploying-philter-via-an-aws-cloudformation-template.md b/docs/docs/solutions/deploying-philter-via-an-aws-cloudformation-template.md new file mode 100644 index 0000000..aafff88 --- /dev/null +++ b/docs/docs/solutions/deploying-philter-via-an-aws-cloudformation-template.md @@ -0,0 +1,36 @@ +# Deploying Philter in AWS via a CloudFormation Template + +AWS CloudFormation can be used to automate the creation and tear down of your AWS cloud resources in a repeatable manner. [Philter](https://www.philterd.ai/philter/) can be included in your CloudFormation templates to also automate its deployment and configuration. + +> This article is designed to be a "quick start" into CloudFormation and Philter. This article describes a CloudFormation template suitable for deploying Philter for purposes of integration testing. A template for deploying Philter for production use requires a few more changes. + + +### Finding Philter's AMI + +To begin, you must have the AMI (e.g. `ami-123456789`) of Philter. + +Alternatively, to find the AMI, launch Philter from the AWS Marketplace. If you have not already you will be prompted by the AWS Marketplace to subscribe to Philter. At the end of the subscription process you will be able to launch an instance into your AWS account. (You can select the smallest available instance size.) Do this and then navigate to your EC2 instances in the AWS Console. + +In the EC2 Console locate the newly launched Philter instance. It will likely still be in a "Pending" state if not already completed launching. Click on the instance such that its details are displayed at the bottom of the EC2 Console. Locate the "AMI" property. This is the Philter AMI identifier. Make a note of this AMI or copy and paste it so you can reference it in your CloudFormation templates. You can now terminate the instance. + +Note that when a new version of Philter is published to the AWS Marketplace it will have a different AMI identifier. If you want to use the newest version you will need to do the steps above again to find the new AMI identifier. See the Philter [AWS AMIs](aws-amis.md) for a sample script to automate finding the AMIs. +If you have difficulties finding the Philter AMI identifier please contact us for assistance. + +### CloudFormation Template + +You can use the AMI ID to launch one or more instances of Philter via your CloudFormation template. You can launch a single instance, multiple instances, or you can launch one or more instances as part of an autoscaling group. You have flexibility depending on your requirements for deploying Philter. In the example below we are going to launch a single instance of Philter. + +We are going to base our template off the AWS sample for a single EC2 instance in a VPC. The sample template can be found [here](https://s3.amazonaws.com/cloudformation-templates-us-east-1/VPC_Single_Instance_In_Subnet.template). This template creates a new VPC along with the required subnet and route table. + +* Open this template in your favorite text editor and locate the `AWSRegionArch2AMI` mapping. For your region, replace the value for the AMI with Philter's AMI you previously found. +* Next, locate the security group for the template that exposes port `80`. Replace `80` with `8080` to be able to access Philter's API. (You will also likely want to change the security groups' inbound CIDR from everyone (`0.0.0.0/0`) to a specific host or set of hosts within your network. +* Save and close the template. + +Note that we only replaced the Philter AMI for your region in the template. The Philter AMI will be different for each AWS region. + +### Launch the Stack + +Now that we have the template we can create a stack from it. A stack is the set of resources that the template defines. You can think of a stack as being an instance of the template. We will use the AWS Console to create the stack. In the AWS Console navigate to the CloudFormation console. Locate the button to create a stack, walk through the steps uploading your template when prompted, and finish. Your new stack with Philter will now be launched. You can watch the stack's progress as CloudFormation creates its resources. When you are finished with the stack you can delete it and all resources that were created for the stack, such as the Philter instance, will be deleted. + +> If you try to launch a CloudFormation stack that uses a Philter AMI but you do not have an active subscription to Philter via the AWS Marketplace the stack creation will fail. To remedy this, [go the AWS Marketplace and subscribe to Philter](https://aws.amazon.com/marketplace/pp/B07YVB8FFT). + diff --git a/docs/docs/solutions/managing-philters-configuration-in-an-auto-scaling-environment.md b/docs/docs/solutions/managing-philters-configuration-in-an-auto-scaling-environment.md new file mode 100644 index 0000000..92af336 --- /dev/null +++ b/docs/docs/solutions/managing-philters-configuration-in-an-auto-scaling-environment.md @@ -0,0 +1,24 @@ +# Managing Philter’s Configuration in an Auto-Scaling Environment + +This article describes how Philter's configuration can be managed when Philter is deployed in an auto-scaling environment. + +## Updating Philter Configuration Values + +Philter reads its settings from the `philter.properties` file when Philter starts. This file must reside alongside Philter wherever Philter is deployed. When Philter is deployed in an auto-scaling environment, updating a configuration requires updating the configuration value on all instances of Philter. There are a few approaches that can be taken. + +### Deployment via a Custom Machine Image + +One way to update the configuration values is to use a custom machine ("pre-baked") image of Philter. When a configuration needs changed, change the configuration value in the machine image and update the auto-scaling environment with the latest machine image. Now, begin substituting the currently running Philter instances with new instances from the updated machine image. + +### Updating Configuration using an External File + +In this method, a copy of Philter's application.properties file is stored on a remote file system, such as Amazon S3. A cron job runs on each deployed Philter instance to periodically download the application.properties file, copy it to the appropriate location, and then restart the Philter service. This method allows you to modify the configuration on Philter on all of the instances with less moving parts than the previous option. + +The following is an example bash script that uses the AWS CLI to copy the `philter.properties` file and restart Philter. + +``` +#!/bin/bash +aws s3 cp s3://your-bucket/application.properties /opt/philter/application.properties +sudo systemctl restart philter.service +sudo systemctl restart philter-ner.service +``` diff --git a/docs/docs/solutions/monitoring-philter-in-aws.md b/docs/docs/solutions/monitoring-philter-in-aws.md new file mode 100644 index 0000000..54f248d --- /dev/null +++ b/docs/docs/solutions/monitoring-philter-in-aws.md @@ -0,0 +1,56 @@ +# Monitoring Philter in AWS + +A deployment of Philter in AWS can be monitored by multiple methods. Here we'll discuss some of the options available when Philter is used in AWS. + +### Monitoring Philter's Application Log with CloudWatch Logs + +> Although no sensitive information is purposely logged to Philter's log files, it is possible for sensitive information to be inadvertently included through some events. For this reason, it is important to ensure that your location for storing Philter's logs are suitable for containing sensitive information such as PHI and PII. + + +Philter's application log is located at `/var/log/philter/philter.log`. When deploying multiple instances of Philter it is useful to have the log files centralized in a single location. We can do this using CloudWatch Logs. + +The first thing to do is to ensure the Philter instance has an appropriate IAM role and policy. The policy must allow write access to CloudWatch Logs. The following policy is sufficient: + +``` +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents", + "logs:DescribeLogStreams" + ], + "Resource": [ + "arn:aws:logs:*:*:*" + ] + } + ] +} +``` + +Next, [install the CloudWatch Logs Agent](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html) on the instance. Configure the agent to send Philter's log to CloudWatch Logs. Modify the CloudWatch Logs configuration file to include Philter's log file: + +``` +[/var/log/philter/philter.log] +file = /var/log/philter/philter.log +log_group_name = /var/log/philter/philter.log +log_stream_name = {instance_id} +datetime_format = %b %d %H:%M:%S +``` + +After restarting the agent, Philter's log file will be available in the CloudWatch Logs console. + +### Monitoring Philter's Availability with an Elastic Load Balancer + +Philter's REST API includes an endpoint that returns the status of Philter. When operating normally, the `/api/status` endpoint returns `HTTP 200 OK`. This endpoint is ideal for monitoring by a service such as an Elastic Load Balancer's health checks. The full endpoint URL will be similar to `https://instance:8080/api/status`. + +Note that, by default, Philter uses a self-signed SSL certificate for its HTTPS interface. In some situations it may be necessary to replace this self-signed certificate with a certificate signed by a trusted authority. + +### Monitoring Philter's Metrics with CloudWatch Metrics + +Philter captures various metrics during its operation. These metrics are exposed via several interfaces. The metrics are exposed via JMX and can also be reported to CloudWatch Metrics as custom metrics. To enable metric reporting to CloudWatch set the appropriate configuration settings in Philter's properties. (Refer to Philter's user documentation for a description of the configuration properties.) Now restart Philter for the changes to take affect. Philter will now publish metrics to CloudWatch Metrics. + +These metrics can be used to trigger alerts based on certain thresholds or be used to trigger auto-scaling if Philter is deployed in an auto-scaling group. diff --git a/docs/docs/solutions/using-aws-kinesis-firehose-transformations-to-filter-sensitive-information-from-streaming-text.md b/docs/docs/solutions/using-aws-kinesis-firehose-transformations-to-filter-sensitive-information-from-streaming-text.md new file mode 100644 index 0000000..577130c --- /dev/null +++ b/docs/docs/solutions/using-aws-kinesis-firehose-transformations-to-filter-sensitive-information-from-streaming-text.md @@ -0,0 +1,100 @@ +# Using AWS Kinesis Firehose Transformations to Filter Sensitive Information from Streaming Text + +AWS Kinesis Firehose is a managed streaming service designed to take large amounts of data from one place to another. For example, you can take data from places such as CloudWatch, AWS IoT, and custom applications using the AWS SDK to places such as Amazon S3, Amazon Redshift, Amazon Elasticsearch, and others. In this post we will use Amazon S3 as the firehose's destination. + +Sometimes you want to manipulate the data as it goes through the firehose. This example solution shows how [Philter](https://www.philterd.ai/philter/) can be used with AWS Kinesis Firehose and AWS Lambda to remove sensitive information, such as PII and PHI, from the text as it travels through the firehose. + +### Prerequisites + +You must have a running instance of [Philter](https://www.philterd.ai/philter/). If you don't already have a running instance of Philter you can launch one through the [AWS Marketplace](https://aws.amazon.com/marketplace/pp/B07YVB8FFT). It is not required that the instance of Philter be running in AWS, but it is required that the instance of Philter be accessible from your AWS Lambda function. Running Philter and your AWS Lambda function in your own VPC allows you to communicate locally with Philter from the function. Otherwise, Philter will need to be available over the public internet or accessible over a VPN connection. [See all Philter launch options.](https://www.philterd.ai/philter/availability/) + +### Configuring the Firehose and the Lambda Function + +There is no need to duplicate an excellent blog post on creating a [Firehose Data Transformation with AWS Lambda](https://aws.amazon.com/blogs/compute/amazon-kinesis-firehose-data-transformation-with-aws-lambda/) to establish the Firehose and Lambda function resources in AWS. So, refer to that blog post and substitute the Python 3 code below. + +To start, create an AWS Firehose and configure an AWS Lambda transformation. When creating the AWS Lambda function, select Python 3.7 and use the following code to submit text to Philter's [API](filtering-api.md). + +``` +from botocore.vendored import requests +import base64 + +def handler(event, context): + + output = [] + + for record in event['records']: + payload=base64.b64decode(record["data"]) + headers = {'Content-type': 'text/plain'} + r = requests.post("https://PHILTER_IP:8080/api/filter", verify=False, data=payload, headers=headers, timeout=20) + filtered = r.text + output_record = { + 'recordId': record['recordId'], + 'result': 'Ok', + 'data': base64.b64encode(filtered.encode('utf-8') + b'\n').decode('utf-8') + } + output.append(output_record) + + return output +``` + +The following Kinesis Firehose test event can be used to test the function: + +``` +{ + "invocationId": "invocationIdExample", + "deliveryStreamArn": "arn:aws:kinesis:EXAMPLE", + "region": "us-east-1", + "records": [ + { + "recordId": "49546986683135544286507457936321625675700192471156785154", + "approximateArrivalTimestamp": 1495072949453, + "data": "R2VvcmdlIFdhc2hpbmd0b24gd2FzIHByZXNpZGVudCBhbmQgaGlzIHNzbiB3YXMgMTIzLTQ1LTY3ODkgYW5kIGhlIGxpdmVkIGF0IDkwMjEwLiBQYXRpZW50IGlkIDAwMDc2YSBhbmQgOTM4MjFhLiBIZSBpcyBvbiBiaW90aW4uIERpYWdub3NlZCB3aXRoIEEwMTAwLg==" + }, + { + "recordId": "49546986683135544286507457936321625675700192471156785154", + "approximateArrivalTimestamp": 1495072949453, + "data": "R2VvcmdlIFdhc2hpbmd0b24gd2FzIHByZXNpZGVudCBhbmQgaGlzIHNzbiB3YXMgMTIzLTQ1LTY3ODkgYW5kIGhlIGxpdmVkIGF0IDkwMjEwLiBQYXRpZW50IGlkIDAwMDc2YSBhbmQgOTM4MjFhLiBIZSBpcyBvbiBiaW90aW4uIERpYWdub3NlZCB3aXRoIEEwMTAwLg==" + } + ] +} +``` + +This test event contains 2 messages and the data for each is base 64 encoded, which is the value "He lived in 90210 and his SSN was 123-45-6789." When the test is executed the response will be: + +``` +[ + "He lived in {{{REDACTED-zip-code}}} and his SSN was {{{REDACTED-ssn}}}.", + "He lived in {{{REDACTED-zip-code}}} and his SSN was {{{REDACTED-ssn}}}." +] +``` + +When executing the test, the AWS Lambda function will extract the data from the requests in the firehose and submit each to Philter for filtering. The responses from each request will be returned from the function as a JSON list. + +Note that in our Python function we are ignoring Philter's self-signed certificate. You should use a valid signed certificate for Philter and never disable certificate validation on clients. + +When data is now published to the Kinesis Firehose stream, the data will be processed by the AWS Lambda function and Philter prior to exiting the firehose at its configured destination. + +### Processing Data + +We can use the AWS CLI to publish data to our Kinesis Firehose stream called `sensitive-text`: + +``` +aws firehose put-record --delivery-stream-name sensitive-text --record "He lived in 90210 and his SSN was 123-45-6789." +``` + +Check the destination Amazon S3 bucket and you will have a single object with the following line: + +``` +He lived in {{{REDACTED-zip-code}}} and his SSN was {{{REDACTED-ssn}}}. +``` + +You're now ready to pump data through the firehose. + +### Conclusion + +In this blog post we have created an AWS Firehose pipeline that uses an AWS Lambda function to remove sensitive information from the text in the streaming pipeline. + +### Resources + +* [Amazon Kinesis Data Firehose](https://aws.amazon.com/kinesis/data-firehose/) +* [Amazon Kinesis Data Firehose Data Transformation](https://docs.aws.amazon.com/firehose/latest/dev/data-transformation.html) diff --git a/docs/docs/solutions/using-philter-with-microsoft-power-automate-flow.md b/docs/docs/solutions/using-philter-with-microsoft-power-automate-flow.md new file mode 100644 index 0000000..57d9371 --- /dev/null +++ b/docs/docs/solutions/using-philter-with-microsoft-power-automate-flow.md @@ -0,0 +1,20 @@ +# Using Philter with Microsoft Power Automate (Flow) + +[Microsoft Power Automate](https://flow.microsoft.com/en-us/) (formerly Microsoft Flow) is an online application to automate tasks using an intuitive online editor. Using the tool you can create automations that are triggered by events, such as the receiving of an email or a new file being stored in OneDrive. In this example solution we will create a trivial automation that uses Philter to filter sensitive information from text. + +We will use an HTTP step to make the call to Philter. An upstream action is setting the content of `Input` that we are putting into the body of the message. The `Input` is plain text so we add an HTTP `Content-Type` header with the value of `text/plain`. In our example, the value of `Input` will be "George Washington was president and his SSN was 123-45-6789." Be sure to replace the IP address in the URI with the IP address or hostname of your Philter instance. + +![Configuration of the HTTP action.](../img/http-action.png) + +We are now ready to run our flow. We can do so by clicking the `Run` button. You can now switch to the `Runs` view to see the run. + +![](../img/runs.png) + +Clicking on our run we can see the results of the HTTP step. + +![Run status of the HTTP step.](../img/output.png) + +In the screen capture above, we can see a summary of the HTTP step run. We see the body of the message that was sent to Philter. At the bottom we can see the filtered text that was returned by Philter. + +Integrating Philter with Microsoft Power Automate is a fairly trivial exercise thanks to Philter's API. Although this example was trivial, it should show the potential possibilities for using Philter with Microsoft Power Automate. + diff --git a/docs/docs/system_requirements.md b/docs/docs/system_requirements.md new file mode 100644 index 0000000..45eab23 --- /dev/null +++ b/docs/docs/system_requirements.md @@ -0,0 +1,9 @@ +# System Requirements + +When launched from a cloud marketplace, Philter is pre-configured and contains all required dependencies. + +Philter requires the following: + +* 2 vCPU (e.g., m5.large instance type on AWS) +* 8 GB of RAM +* Java 17 diff --git a/docs/docs/upgrading.md b/docs/docs/upgrading.md new file mode 100644 index 0000000..a55cfe0 --- /dev/null +++ b/docs/docs/upgrading.md @@ -0,0 +1,33 @@ +# Upgrading Philter + +We recommend reviewing the [Philter Release Notes](https://www.philterd.ai/philter-release-notes/) prior to upgrading. + +## Upgrading from a 2.x Version + +Upgrading Philter to the newest version requires moving Philter's configuration to the new version of Philter. To upgrade Philter from a 2.x version, follow the steps below. + +1. Launch a new instance of the newest version of Philter. +2. Copy your policies from /opt/philter/policies to the new instance. +3. Copy your /opt/philter/philter.properties to the new instance. +4. Copy your /opt/philter/philter-ui.properties to the new instance. +5. Replace the new virtual machine's properties file with your copy from step 1. +6. Copy your policies from /opt/philter/policies to the new instance. +7. If you have configured any SSL certificates for Philter, copy those files over to the new instance. +8. Restart Philter: sudo systemctl restart philter.service && sudo systemctl restart philter-ui.service && sudo systemctl restart philter-ner.service +9. Test the new Philter virtual machine to make sure it is behaving as expected. +10. Decommission the old Philter instance. + +## Upgrading from a 1.x Version + +Upgrading Philter to the newest version requires moving Philter's configuration to the new version of Philter. To upgrade Philter from a 1.x version, follow the steps below. + +1. Make local copies of your current Philter's properties files. + + * `/opt/philter/philter.properties` (prior to 1.10.1 the filename was /opt/philter/application.properties) + * `/opt/philter/philter-ui.properties` (not applicable prior to version 1.10) + +2. Launch a new instance of the newest version of Philter. +3. Replace the new virtual machine's properties file with your copy from step 1. +4. Restart Philter: sudo systemctl restart philter.service sudo systemctl restart philter-ui.service sudo systemctl restart philter-ner.service +5. Test the new Philter virtual machine to make sure it is behaving appropriately. +6. Decommission the old Philter instance. diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 7c2b59d..ecf27f4 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -7,22 +7,73 @@ site_author: philterd site_description: User guide for Philter, the open source PII/PHI redaction engine. theme: name: material + logo: img/philterd.png locale: en palette: primary: red + features: + #- navigation.tabs + - navigation.expand + - navigation.footer +extra: + homepage: https://www.philterd.ai + social: + - icon: fontawesome/brands/linkedin + link: https://www.linkedin.com/company/philterd/ + analytics: + provider: google + property: G-SQ49ZGCWT2 + consent: + title: Cookie consent + description: >- + We use cookies to recognize your repeated visits and preferences, as well + as to measure the effectiveness of our documentation and whether users + find what they're searching for. With your consent, you're helping us to + make our documentation better. nav: - - Home: index.md - - Deidentification: - - 'Bucketing': 'deidentification/bucketing.md' - - 'Date Shifting': 'deidentification/date-shifting.md' - - 'Filter Policies': - - 'Filter Policies': 'filter_policies/filter_policies.md' - - 'Filters': 'filter_policies/filters.md' - - 'Filter Strategies': 'filter_policies/filter_strategies.md' - - 'Ignoring Sensitive Information': 'filter_policies/ignoring_sensitive_information.md' - - 'Sample Filter Policies': 'filter_policies/sample_filter_policies.md' - - 'Other Features': - - 'Alerts': 'other_features/alerts.md' - - 'Anonymization': 'other_features/anonymization.md' - - 'Span Disambiguation': 'other_features/span_disambiguation.md' - - Settings: settings.md \ No newline at end of file + - 'Home': index.md + - 'Upgrading': upgrading.md + - 'System Requirements': system_requirements.md + - 'Quick Starts': + - 'Philter Quick Start on AWS': 'quick_starts/quick_start_aws.md' + - 'Philter Quick Start on Microsoft Azure': 'quick_starts/quick_start_azure.md' + - 'Philter Quick Start on Google Cloud': 'quick_starts/quick_start_gcp.md' + - 'PII, PHI, and NPPI': 'pii_phi_nppi.md' + - 'Deidentification': 'deidentification.md' + - 'Policies': + - 'Sample Policies': 'policies/sample_policies.md' + - 'Filter Policies': 'policies/filter_policies.md' + - 'Filters': 'policies/filters.md' + - 'Filter Strategies': 'policies/filter_strategies.md' + - 'Document Analysis': + - 'Document Analysis': 'policies/document_analysis.md' + - 'Excluding by DocumentType': 'policies/excluding_by_document_type.md' + - 'Splitting Input Text': 'policies/splitting_input_text.md' + - 'Ignoring Specific Information': 'policies/ignoring_specific_information.md' + - 'API and SDKs': + - 'API Overview': 'api_and_sdks/api.md' + - 'API Methods': + - 'Filtering API': 'api_and_sdks/api/filtering_api.md' + - 'Policies API': 'api_and_sdks/api/policies_api.md' + - 'Alerts API': 'api_and_sdks/api/alerts_api.md' + - 'Client SDKs': 'api_and_sdks/sdks.md' + - 'Settings': settings.md + - 'Monitoring and Logging': 'monitoring_and_logging.md' + - 'Advanced Features': + - 'Alerts': 'other_features/alerts.md' + - 'Consistent Anonymization': 'other_features/consistent_anonymization.md' + - 'Span Disambiguation': 'other_features/span_disambiguation.md' + - 'Dashboard': 'other_features/dashboard.md' + - 'How-tos': + - 'How to Evaluate Philter''s Performance': 'howtos/evaluate_performance.md' + - 'How to Use a Signed SSL Certificate with Philter': 'howtos/signed_certificate.md' + - 'How to Use an Apache Reverse Proxy with Philter': 'howtos/apache_proxy.md' + - 'Solutions': + - 'Monitoring Philter in AWS': 'solutions/monitoring-philter-in-aws.md' + - 'Deploying Philter in a HIPAA Environment': 'solutions/deploying-philter-in-a-hipaa-environment.md' + - 'Consistent Anonymization with Redis': 'solutions/consistent-anonymization-with-redis.md' + - 'Apache NiFi and Philter': 'solutions/apache-nifi-and-philter.md' + - 'Managing Philter’s Configuration in an Auto-Scaling Environment': 'solutions/managing-philters-configuration-in-an-auto-scaling-environment.md' + - 'Deploying Philter in AWS via a CloudFormation Template': 'solutions/deploying-philter-via-an-aws-cloudformation-template.md' + - 'Using AWS Kinesis Firehose Transformations to Filter Sensitive Information from Streaming Text': 'solutions/using-aws-kinesis-firehose-transformations-to-filter-sensitive-information-from-streaming-text.md' + - 'Using Philter with Microsoft Power Automate (Flow)': 'solutions/using-philter-with-microsoft-power-automate-flow.md' \ No newline at end of file