Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BigQuery keyfile_dict profile mapping use env vars for sensitive fields #471

Merged
merged 4 commits into from
Aug 16, 2023

Conversation

jbandoro
Copy link
Collaborator

Description

I noticed that if GoogleCloudServiceAccountDictProfileMapping is used for profile mapping, the full keyfile json is logged in the UI. See example below:
image

This PR hides the sensitive private key fields (private_key and private_key_id) as env vars so that they will not show up in the logs, see below:
image

Would appreciate feedback since unlike other profiles, the secret_fields here are nested within the keyfile_json field so I had to override BaseProfileMapping.env_vars here to make it work.

Related Issue(s)

None

Breaking Change?

None

Checklist

  • I have made corresponding changes to the documentation (if required)
  • I have added tests that prove my fix is effective or that my feature works

@jbandoro jbandoro requested a review from a team as a code owner August 16, 2023 00:21
@jbandoro jbandoro requested a review from a team August 16, 2023 00:21
@netlify
Copy link

netlify bot commented Aug 16, 2023

👷 Deploy Preview for amazing-pothos-a3bca0 processing.

Name Link
🔨 Latest commit a08455d
🔍 Latest deploy log https://app.netlify.com/sites/amazing-pothos-a3bca0/deploys/64dd31bfd4a6e60008e1b129

@jbandoro jbandoro temporarily deployed to external August 16, 2023 00:22 — with GitHub Actions Inactive
@jbandoro jbandoro temporarily deployed to external August 16, 2023 09:36 — with GitHub Actions Inactive
@jbandoro jbandoro temporarily deployed to external August 16, 2023 09:59 — with GitHub Actions Inactive
@codecov
Copy link

codecov bot commented Aug 16, 2023

Codecov Report

Patch coverage has no change and project coverage change: -0.41% ⚠️

Comparison is base (b9fdc92) 91.52% compared to head (05fb91f) 91.11%.
Report is 2 commits behind head on main.

❗ Current head 05fb91f differs from pull request most recent head a08455d. Consider uploading reports for the commit a08455d to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #471      +/-   ##
==========================================
- Coverage   91.52%   91.11%   -0.41%     
==========================================
  Files          50       50              
  Lines        1770     1768       -2     
==========================================
- Hits         1620     1611       -9     
- Misses        150      157       +7     
Files Changed Coverage Δ
.../profiles/bigquery/service_account_keyfile_dict.py 55.55% <0.00%> (-38.89%) ⬇️

... and 1 file with indirect coverage changes

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Collaborator

@tatiana tatiana left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks great, @jbandoro ! Thanks a lot for your contribution.

Sorry for the misleading coverage comments (PR #768 should fix this).

Can we add tests covering the exceptions being raised? I'm happy to approve/merge the PR once this is done.

@tatiana tatiana temporarily deployed to external August 16, 2023 20:30 — with GitHub Actions Inactive
Copy link
Collaborator

@tatiana tatiana left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you very much for addressing the feedback, @jbandoro , and fixing this issue.

@tatiana tatiana merged commit 7fcecf6 into astronomer:main Aug 16, 2023
39 checks passed
tatiana added a commit that referenced this pull request Aug 16, 2023
Feature (pending documentation!)
* Support dbt global flags (via dbt_cmd_global_flags in `operator_args` by @tatiana in #469

Enhancements
* Hide sensitive field when using BigQuery keyfile_dict profile mapping by @jbandoro in #471

Bug fixes
* Fix bug on select node add exclude selector subset ids logic by @jensenity in #463
* Refactor dbt ls to run from a temporary directory, to avoid Read-only file system errors during DAG parsing, by @tatiana in #414

Others
* Docs: Fix RenderConfig load argument by @jbandoro in #466
* Enable CI integration tests from external forks by @tatiana in #458
* Improve CI tests runtime by @tatiana in #457
* Change CI to run coverage after tests pass by @tatiana in #461
* Fix forks code revision in code coverage by @tatiana in #472
* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #467"
i
@tatiana tatiana mentioned this pull request Aug 16, 2023
@tatiana tatiana added this to the 1.1.0 milestone Aug 16, 2023
@tatiana tatiana mentioned this pull request Sep 6, 2023
tatiana added a commit that referenced this pull request Sep 6, 2023
**Features**

* Support dbt global flags (via dbt_cmd_global_flags in operator_args)
by @tatiana in #469
* Support parsing DAGs when there are no connections by @jlaneve in #489

**Enhancements**

* Hide sensitive field when using BigQuery keyfile_dict profile mapping
by @jbandoro in #471
* Consistent Airflow Dataset URIs, inlets and outlets with `Openlineage
package <https://pypi.org/project/openlineage-integration-common/>`_ by
@tatiana in #485. `Read more
<https://astronomer.github.io/astronomer-cosmos/configuration/lineage.html>`_.
* Refactor ``LoadMethod.DBT_LS`` to run from a temporary directory with
symbolic links by @tatiana in #488
* Run ``dbt deps`` when using ``LoadMethod.DBT_LS`` by @DanMawdsleyBA in
#481
* Update Cosmos log color to purple by @harels in #494
* Change operators to log ``dbt`` commands output as opposed to
recording to XCom by @tatiana in #513

**Bug fixes**

* Fix bug on select node add exclude selector subset ids logic by
@jensenity in #463
* Refactor dbt ls to run from a temporary directory, to avoid Read-only
file system errors during DAG parsing, by @tatiana in #414
* Fix profile_config arg in DbtKubernetesBaseOperator by @david-mag in
#505
* Fix SnowflakePrivateKeyPemProfileMapping private_key reference by
@nacpacheco in #501
* Fix incorrect temporary directory creation in VirtualenvOperator init
by @tatiana in #500
* Fix log propagation issue by @tatiana in #498
* Fix PostgresUserPasswordProfileMapping to retrieve port from
connection by @jlneve in #511

**Others**

* Docs: Fix RenderConfig load argument by @jbandoro in #466
* Enable CI integration tests from external forks by @tatiana in #458
* Improve CI tests runtime by @tatiana in #457
* Change CI to run coverage after tests pass by @tatiana in #461
* Fix forks code revision in code coverage by @tatiana in #472
* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #467
* Drop support to Python 3.7 in the CI test matrix by @harels in #490
* Add Airflow 2.7 to the CI test matrix by @tatiana in #487
* Add MyPy type checks to CI since we exceeded pre-commit disk quota
usage by @tatiana in #510
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants