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

🛣️ Create Data Production Transit VPC #4644

Closed
wants to merge 42 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
a43812b
Import DX resources
Jul 8, 2024
0259e76
Merge a43812b6b3e11374bc70f570510e86b91cd7d3fc into 64a7389e32f0e33db…
Jul 8, 2024
bc126ec
🤖 Update .github/dependabot.yml
moj-data-platform-robot Jul 8, 2024
08c2563
Adds VPC and NLB
Jul 8, 2024
afd3c33
Merge branches 'chore/apdp-transit-vpc' and 'chore/apdp-transit-vpc' …
Jul 8, 2024
1713be6
:dependabot: github-actions(deps): Bump bridgecrewio/checkov-action f…
dependabot[bot] Jul 9, 2024
3028b1c
:dependabot: github-actions(deps): Bump aquasecurity/trivy-action fro…
dependabot[bot] Jul 9, 2024
d7ac2ea
:dependabot: terraform(deps): Bump hashicorp/aws from 5.55.0 to 5.57.…
dependabot[bot] Jul 9, 2024
e757454
:dependabot: terraform(deps): Bump terraform-aws-modules/iam/aws from…
dependabot[bot] Jul 9, 2024
8d37ea5
expand NLB
Jul 9, 2024
617f4f7
🌐 AP UI DNS (#4652)
Jul 9, 2024
0d292d6
eks prod cluster 1.25 (#4660)
Emterry Jul 9, 2024
f89b071
Policy Option for LakeFormation Sharing for OIDC roles (#4648)
julialawrence Jul 9, 2024
c2d9a45
eks prod nodes 1.25 (#4661)
Emterry Jul 9, 2024
110b774
Fixing malformed policy bug in oidc roles (#4662)
julialawrence Jul 9, 2024
21edd6b
addons for eks 1.25 (#4665)
Emterry Jul 9, 2024
2c16319
Control Plane EKS Production Cluster Upgrade from 1.25 -> 1.26 (#4666)
Emterry Jul 10, 2024
f7aebfc
Upgrade EKS nodes to 1.26 in Analytical Platform Production (#4667)
Emterry Jul 10, 2024
08f56e9
:dependabot: terraform(deps): Bump hashicorp/aws from 5.52.0 to 5.57.…
dependabot[bot] Jul 10, 2024
01fce1c
:dependabot: terraform(deps): Bump terraform-aws-modules/iam/aws from…
dependabot[bot] Jul 10, 2024
eee1bb9
Upgrade EKS addons for 1.26 in Analytical Platform production cluster…
Emterry Jul 10, 2024
621788a
upgrade EKS control plane to 1.27 on Analytical Platform Production c…
Emterry Jul 10, 2024
34dd012
Upgrade EKS nodes to 1.27 in Analytical Platform Production (#4676)
Emterry Jul 11, 2024
f351e1b
:dependabot: terraform(deps): Bump hashicorp/aws from 5.47.0 to 5.57.…
dependabot[bot] Jul 11, 2024
b0baff2
:dependabot: terraform(deps): Bump terraform-aws-modules/iam/aws from…
dependabot[bot] Jul 11, 2024
71b1b5a
:dependabot: terraform(deps): Bump terraform-aws-modules/iam/aws from…
dependabot[bot] Jul 11, 2024
20af802
Upgrade EKS addons to 1.27 in Analytical Platform Production Cluster …
Emterry Jul 11, 2024
98caf53
🚑 Fix Cluster AutoScaler IAM Policy (#4678)
Jul 11, 2024
c4138e1
upgrade EKS control plane to 1.28 on Analytical Platform Production (…
Emterry Jul 11, 2024
4a5e756
Upgrade EKS nodes to 1.28 in Analytical Platform Production (#4691)
Emterry Jul 12, 2024
0676792
:dependabot: terraform(deps): Bump hashicorp/aws from 5.57.0 to 5.58.…
dependabot[bot] Jul 12, 2024
8c93d3c
:dependabot: github-actions(deps): Bump bridgecrewio/checkov-action f…
dependabot[bot] Jul 12, 2024
4f4d589
:dependabot: terraform(deps): Bump terraform-aws-modules/iam/aws from…
dependabot[bot] Jul 12, 2024
4399527
:dependabot: github-actions(deps): Bump actions/dependency-review-act…
dependabot[bot] Jul 12, 2024
877490c
Upgrade EKS addons for 1.28 Analytical Platform production (#4698)
Emterry Jul 12, 2024
60c8d17
:dependabot: github-actions(deps): Bump actions/setup-python from 5.1…
dependabot[bot] Jul 12, 2024
299d4e4
📝 Add ADR Lake Formation (#4663)
bagg3rs Jul 12, 2024
316665a
:dependabot: terraform(deps): Bump hashicorp/aws from 5.57.0 to 5.58.…
dependabot[bot] Jul 15, 2024
a169474
:dependabot: terraform(deps): Bump terraform-aws-modules/iam/aws from…
dependabot[bot] Jul 15, 2024
9f23229
remove kms, vpc and lb
Jul 15, 2024
0c8a258
Merge 9f23229cef5ca66362281cd883a09dbc24dba6a8 into a1694748c60f4a1a7…
Jul 15, 2024
88a5968
🤖 Update .github/dependabot.yml
moj-data-platform-robot Jul 15, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ updates:
- "terraform/aws/analytical-platform-data-production/create-a-derived-table"
- "terraform/aws/analytical-platform-data-production/data-engineering-pipelines"
- "terraform/aws/analytical-platform-data-production/github-airflow-cjs-dashboard-data"
- "terraform/aws/analytical-platform-data-production/hmcts-sdp-transit-direct-connect"
- "terraform/aws/analytical-platform-data-production/ingestion-egress"
- "terraform/aws/analytical-platform-data-production/openmetadata"
- "terraform/aws/analytical-platform-data-production/powerbi-gateway"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/platform-pagerduty-rota-to-slack.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:

- name: Setup Python
id: setup_python
uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0
uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1
with:
python-version: 3.9

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/repository-dependency-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,6 @@ jobs:

- name: Dependency review
id: dependency_review
uses: actions/dependency-review-action@72eb03d02c7872a771aacd928f3123ac62ad6d3a # v4.3.3
uses: actions/dependency-review-action@5a2ce3f5b92ee19cbb1541a4984c76d921601d7c # v4.3.4
with:
fail-on-severity: critical
4 changes: 2 additions & 2 deletions .github/workflows/reusable-workflow-terraform.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ jobs:
- name: Checkov
if: github.ref != 'refs/heads/main'
id: terraform_static_analysis_checkov
uses: bridgecrewio/checkov-action@822daab5b7e499b443dd08e0217886b11a8b71fd # v12.2811.0
uses: bridgecrewio/checkov-action@e28bcecbf174dfbefd2829b5e2ded9d5aead6e9e # v12.2821.0
with:
directory: ${{ env.working-directory }}
framework: terraform
Expand All @@ -66,7 +66,7 @@ jobs:
- name: Trivy
if: github.ref != 'refs/heads/main'
id: terraform_static_analysis_trivy
uses: aquasecurity/trivy-action@7c2007bcb556501da015201bcba5aa14069b74e2 # v0.23.0
uses: aquasecurity/trivy-action@6e7b7d1fd3e4fef0c5fa8cce1229c54b2c9bd0d8 # v0.24.0
with:
scan-type: config
scan-ref: ${{ env.working-directory }}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
owner_slack: "#analytical-platform-notifications"
title: ADR-011 Use Lake Formation for data access management
last_reviewed_on: 2024-07-05
review_in: 6 months
---

# <%= current_page.data.title %>

## Status

✅ Accepted

## Context

We use [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) to manage access to data based on resources. However, IAM lacks fine-grained access controls, such as column and row level permissions. Additionally, we are receiving increasing requests to share sensitive data [across accounts](/documentation/adrs/adr-009-use-separate-aws-accounts-for-data.html), where data producers want to control access to their own data. This highlights the need for solutions that allow more detailed access management and data governance.

## Decision

We have chosen to implement AWS [Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/what-is-lake-formation.html) to meet our needs for fine-grained data permissions and robust data governance. While IAM manages resource-based permissions, it does not offer the column and row level controls we require. Lake Formation addresses these gaps by providing fine-grained access management capabilities.

Additionally, Lake Formation supports our growing need to share sensitive data across accounts, enabling data producers to govern their own data. This solution not only enhances security and compliance but also streamlines the process of data sharing and management within our organization.

## Consequences

### General consequences

- We will need to support and maintain a Terraform module for teams to enable and configure Lake Formation
- Current methods for granting and revoking will need to be reviewed with users
- We will need to build and maintain a central tag repository to avoid tagging collisions
- We will still require a solution for unstructured data

### Advantages

- Enables secure data sharing across accounts. Data can stay within the account without the need for exporting or data pipelines which reduces duplication
- Integration with AWS Identity Center and our existing identity management system
- Improved data compliance with [security event logging](https://docs.aws.amazon.com/lake-formation/latest/dg/security-event-logging.html) and auditing capabilities
- We can give data owners direct control over who has access to their data
- Fine and coarse-grain access control with attributes from users Entra ID profile
- We can make use of tag based access control [TBAC](https://docs.aws.amazon.com/lake-formation/latest/dg/tag-based-access-control.html) also known as attribute-based access control [ABAC](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html#introduction_attribute-based-access-control_compare-rbac). This reduces the number of access policies and roles

### Disadvantages

- Onboarding of datasets will need more up front work by engineers
1 change: 1 addition & 0 deletions source/documentation/adrs/adr-index.html.md.erb
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ To understand why we are recording decisions and how we are doing it, please see
| ADR-008 | 🤔 | [Documentation](/documentation/adrs/adr-008-documentation.html) |
| ADR-009 | 🤔 | [Use separate AWS accounts for data domains and products](/documentation/adrs/adr-009-use-separate-aws-accounts-for-data.html) |
| ADR-010 | ✅ | [Use AWS IAM Identity Center customer managed applications for user access](/documentation/adrs/adr-010-use-aws-iam-identity-center-managed-applications-for-user-access.html) |
| ADR-011 | ✅ | [Use Lake Formation for data access management](/documentation/adrs/adr-011-use-lake-formation-for-data-access-management.html) |

**Statuses:**

Expand Down
36 changes: 18 additions & 18 deletions terraform/auth0/alpha-analytics-moj/.terraform.lock.hcl

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion terraform/auth0/alpha-analytics-moj/terraform.tf
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "5.57.0"
version = "5.58.0"
}
auth0 = {
source = "auth0/auth0"
Expand Down
34 changes: 17 additions & 17 deletions terraform/auth0/dev-analytics-moj/.terraform.lock.hcl

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion terraform/auth0/dev-analytics-moj/terraform.tf
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "5.57.0"
version = "5.58.0"
}
auth0 = {
source = "auth0/auth0"
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "5.55.0"
version = "5.57.0"
}
}
required_version = "~> 1.5"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ module "airflow_create_a_pipeline_iam_policy" {
#checkov:skip=CKV_TF_1:Module is from Terraform registry

source = "terraform-aws-modules/iam/aws//modules/iam-policy"
version = "5.40.0"
version = "5.41.0"

name_prefix = "github-airflow-create-a-pipeline"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ module "airflow_create_a_pipeline_iam_role" {
#checkov:skip=CKV_TF_1:Module is from Terraform registry

source = "terraform-aws-modules/iam/aws//modules/iam-github-oidc-role"
version = "5.40.0"
version = "5.41.0"

name = "github-airflow-create-a-pipeline"

Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ module "airflow_analytical_platform_development_iam_policy" {
#checkov:skip=CKV_TF_1:Module registry does not support commit hashes for versions

source = "terraform-aws-modules/iam/aws//modules/iam-policy"
version = "5.40.0"
version = "5.41.0"

name = "airflow-analytical-platform-development"

Expand Down Expand Up @@ -301,7 +301,7 @@ module "airflow_dev_monitoring_iam_policy" {
#checkov:skip=CKV_TF_1:Module registry does not support commit hashes for versions

source = "terraform-aws-modules/iam/aws//modules/iam-policy"
version = "5.40.0"
version = "5.41.0"

name = "airflow_dev_monitoring"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ module "airflow_analytical_platform_development_iam_role" {
#checkov:skip=CKV_TF_1:Module registry does not support commit hashes for versions

source = "terraform-aws-modules/iam/aws//modules/iam-role-for-service-accounts-eks"
version = "5.40.0"
version = "5.41.0"

create_role = true

Expand Down Expand Up @@ -91,7 +91,7 @@ module "airflow_dev_monitoring_iam_role" {
#checkov:skip=CKV_TF_1:Module registry does not support commit hashes for versions

source = "terraform-aws-modules/iam/aws//modules/iam-role-for-service-accounts-eks"
version = "5.40.0"
version = "5.41.0"

create_role = true

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "5.52.0"
version = "5.57.0"
}
tls = {
source = "hashicorp/tls"
Expand Down
Loading
Loading