$ whoami
• Наталя Годек
• Харківʼянка в Лондоні
• Cloud Architect/Системщик/Девопс
• GDE in Cloud Platform
• Соцмережі: @ouvessvit
В світі стільки інформації
Всі дані - для вашого задоволення
Потоки даних* Логи Дані клієнтів
* Картинка з видрами авторства Мітча Сеймура з книги “Gently Down the Stream”
Дії користувачів
ouvessvit
ouvessvit
Конфіденційні дані можна зберігати
в хмарі?!
Платформа даних, народжена в хмарі: GCP
BigQuery
Cloud Storage Composer
Cloud
Functions
Vertex AI
Dataplex
Google
Kubernetes
Engine
Pub/Sub
Spanner
Cloud SQL
Memorystore
ouvessvit
Платформа даних, народжена в хмарі: AWS
Kafka - MSK
Opensearch
RDS
k8s - EKS
Elasticache
S3
AWS Glue
AWS
Athena
Kinesis Data
Streams
Kinesis Data
Analytics
SageMaker
ouvessvit
Хмарні сервіси - публічно доступні API.
Як захистити дані?
AWS
Безсерверні продукти комунікують через інтернет
Приватні
сервіси
VPC
Subnet
Інтернет
ouvessvit
ouvessvit
Безпека в AWS з VPC Endpoints
ouvessvit
AWS
Приватні
сервіси
VPC
Subnet
Інтернет
Та ж історія в Google Cloud
Project 1 Project 2 Project 3
VPC
Storage BQ BQ
Cloud
Functions
Корпоративний Wifi
ouvessvit
VPC Service Perimeter
Захист даних в Google Cloud з VPC Service Controls
Інтернет
NO_MATCHING_POLICY
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
Неавторизована особа
Неавторизований проєкт GCP
Ingress/Egress Policy
Дозволена особа
IP адреси VPN чи офісів
Корпоративний
Wifi
Захищені API
Проєкт 1
Проєкт 2
Проєкт 3
Звʼязок між
сервісами
Google Cloud
залишається в
межах мереж
Гугла
ouvessvit
VPC Service Perimeter
Захист даних в Google Cloud з VPC Service Controls
Інтернет
NO_MATCHING_POLICY
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
Неавторизована особа
Неавторизований проєкт GCP
Ingress/Egress Policy
Дозволена особа
IP адреси VPN чи офісів
Корпоративний
Wifi
Захищені API
Проєкт 1
Проєкт 2
Проєкт 3
Звʼязок між
сервісами
Google Cloud
залишається в
межах мереж
Гугла
ouvessvit
VPC Service Perimeter
Захист даних в Google Cloud з VPC Service Controls
Інтернет
NO_MATCHING_POLICY
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
Неавторизована особа
Неавторизований проєкт GCP
Ingress/Egress Policy
Дозволена особа
IP адреси VPN чи офісів
Корпоративний
Wifi
Захищені API
Проєкт 1
Проєкт 2
Проєкт 3
Звʼязок між
сервісами
Google Cloud
залишається в
межах мереж
Гугла
ouvessvit
VPC Service Perimeter
Захист даних в Google Cloud з VPC Service Controls
Інтернет
NO_MATCHING_POLICY
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
Неавторизована особа
Неавторизований проєкт GCP
Ingress/Egress Policy
Дозволена особа
IP адреси VPN чи офісів
Корпоративний
Wifi
Захищені API
Проєкт 1
Проєкт 2
Проєкт 3
Звʼязок між
сервісами
Google Cloud
залишається в
межах мереж
Гугла
ouvessvit
VPC Service Perimeter
Захист даних в Google Cloud з VPC Service Controls
Інтернет
NO_MATCHING_POLICY
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
Неавторизована особа
Неавторизований проєкт GCP
Ingress/Egress Policy
Дозволена особа
IP адреси VPN чи офісів
Корпоративний
Wifi
Захищені API
Проєкт 1
Проєкт 2
Проєкт 3
Звʼязок між
сервісами
Google Cloud
залишається в
межах мереж
Гугла
ouvessvit
Bridges: для зʼєднання
проєктів в різних
периметрах
Access Levels: для
визначення, хто має
доступ та звідки
Ingress/Egress Policies:
перелік певних API
запитів, що можуть
перетинати кордони
периметру
* All IDs and IP addresses are randomly generated
Захист даних в Google Cloud з VPC Service Controls
ouvessvit
VPC Service Perimeter
Захищені API
Проєкт 1
Проєкт 2
Проєкт 3
Звʼязок між
сервісами
Google Cloud
залишається в
межах мереж
Гугла
Налаштовуємо Cloud Run & Cloud Functions
ERROR: VPC Service Controls: Request is prohibited by organization’s policy.
Мій Проєкт
VPC Service Perimeter
func-sa my-func1 my-
dataset
Cloud Functions, Cloud Run та інші
безсерверні продукти категорії compute
працюють в так званих тіньових проєктах;
для забезпечення комунікації з захищеними
сервісами даних недостатньо додати їх до
одного периметру.
ouvessvit
Налаштовуємо Cloud Run & Cloud Functions
Twitter: ouvessvit
Мій Проєкт
VPC Service Perimeter
func-sa my-func1 my-
dataset
Варіант 1: додати service account функції до
спеціального access level, що приєднаний
до периметру.
Таким чином, запит до датасету прийде від
дозволеного користувача, і буде
дозволений в периметрі.
cloud-functions-access-
lvl:
- members:
- func-sa@my-
project.iam.gserviceacc
ount.com
ouvessvit
Налаштовуємо Cloud Run & Cloud Functions
Мій Проєкт
VPC Service Perimeter
func-sa my-func1 my-
dataset
Варіант 2: сконфігурувати функцію в
підмережі за використання Serverless VPC
Access Connector.
Таким чином, для периметру запит
виглядатиме як такий, що надійшов з
довіреної мережі (мережі того ж проєкта).
Serverless VPC
connector
subnet
ouvessvit
AWS не шифрує за замовчанням
Налаштовуємо Glue: шифрування каталогу
AWS Glue
S3: бізнес дані
Glue logs
resource "aws_glue_data_catalog_encryption_settings" "example" {
data_catalog_encryption_settings {
encryption_at_rest {
catalog_encryption_mode = "SSE-KMS"
kms_key_arn =
data.aws_kms_key.glue_catalog.arn
}
}
}
resource "aws_glue_security_configuration" "example" {
name = "example"
encryption_configuration {
cloudwatch_encryption {
cloudwatch_encryption_mode = "SSE-KMS"
kms_key_arn =
data.aws_kms_key.glue_logs.arn
}
s3_encryption {
s3_encryption_mode = "SSE-S3"
}
}
}
S3: тимчасове
сховище
ouvessvit
Налаштовуємо Glue: шифрування каталогу
AWS Glue
Glue logs
resource "aws_glue_data_catalog_encryption_settings" "example" {
data_catalog_encryption_settings {
encryption_at_rest {
catalog_encryption_mode = "SSE-KMS"
kms_key_arn =
data.aws_kms_key.glue_catalog.arn
}
}
}
resource "aws_glue_security_configuration" "example" {
name = "example"
encryption_configuration {
cloudwatch_encryption {
cloudwatch_encryption_mode = "SSE-KMS"
kms_key_arn =
data.aws_kms_key.glue_logs.arn
}
s3_encryption {
s3_encryption_mode = "SSE-KMS"
kms_key_arn =
data.aws_kms_key.glue_s3.arn
}
ouvessvit
S3: бізнес дані
S3: тимчасове
сховище
Налаштовуємо Glue: шифрування каталогу
AWS Glue
Glue logs
resource "aws_glue_data_catalog_encryption_settings" "example" {
data_catalog_encryption_settings {
encryption_at_rest {
catalog_encryption_mode = "SSE-KMS"
kms_key_arn =
data.aws_kms_key.glue_catalog.arn
}
}
}
resource "aws_glue_security_configuration" "example" {
name = "example"
encryption_configuration {
cloudwatch_encryption {
cloudwatch_encryption_mode = "SSE-KMS"
kms_key_arn =
data.aws_kms_key.glue_logs.arn
}
s3_encryption {
s3_encryption_mode = "SSE-KMS"
kms_key_arn =
data.aws_kms_key.glue_s3.arn
}
ouvessvit
S3: бізнес дані
S3: тимчасове
сховище
Налаштовуємо Athena: workgroups
Glue Catalog data_science
> Publish metrics
> Bytes scanned per
query: 30000000
> Encryption: SSE_S3
> Output location
sales
> Publish metrics
> Bytes scanned per
query: 100000000
> Encryption: SSE_S3
> Requester Pays
> Bucket owner ACL
corp_bi
> Publish metrics
> Bytes scanned per
query: 25000000
> Encryption: SSE_KMS
> Output location
clients
orders
products
workgroup workgroup workgroup
ouvessvit
Налаштовуємо Athena: workgroups
Glue Catalog
clients
orders
products
IAM роль: sales_data_analytics
workgroup workgroup workgroup
data_science
> Publish metrics
> Bytes scanned per
query: 30000000
> Encryption: SSE_S3
> Output location
sales
> Publish metrics
> Bytes scanned per
query: 100000000
> Encryption: SSE_S3
> Requester Pays
> Bucket owner ACL
corp_bi
> Publish metrics
> Bytes scanned per
query: 25000000
> Encryption: SSE_KMS
> Output location
ouvessvit
Вимкніть публічний доступ до storage
buckets
Вимкніть публічний доступ до storage buckets
ouvessvit
Дякую!
Приєднуйся до дискусії в discord
Twitter: ouvessvit

"Building a cloud-native data platform with security in mind", Natalie Godec

  • 2.
    $ whoami • НаталяГодек • Харківʼянка в Лондоні • Cloud Architect/Системщик/Девопс • GDE in Cloud Platform • Соцмережі: @ouvessvit
  • 3.
    В світі стількиінформації
  • 4.
    Всі дані -для вашого задоволення Потоки даних* Логи Дані клієнтів * Картинка з видрами авторства Мітча Сеймура з книги “Gently Down the Stream” Дії користувачів ouvessvit
  • 5.
  • 6.
    Конфіденційні дані можназберігати в хмарі?!
  • 7.
    Платформа даних, народженав хмарі: GCP BigQuery Cloud Storage Composer Cloud Functions Vertex AI Dataplex Google Kubernetes Engine Pub/Sub Spanner Cloud SQL Memorystore ouvessvit
  • 8.
    Платформа даних, народженав хмарі: AWS Kafka - MSK Opensearch RDS k8s - EKS Elasticache S3 AWS Glue AWS Athena Kinesis Data Streams Kinesis Data Analytics SageMaker ouvessvit
  • 9.
    Хмарні сервіси -публічно доступні API. Як захистити дані?
  • 10.
    AWS Безсерверні продукти комунікуютьчерез інтернет Приватні сервіси VPC Subnet Інтернет ouvessvit
  • 11.
  • 12.
    Безпека в AWSз VPC Endpoints ouvessvit AWS Приватні сервіси VPC Subnet Інтернет
  • 13.
    Та ж історіяв Google Cloud Project 1 Project 2 Project 3 VPC Storage BQ BQ Cloud Functions Корпоративний Wifi ouvessvit
  • 14.
    VPC Service Perimeter Захистданих в Google Cloud з VPC Service Controls Інтернет NO_MATCHING_POLICY RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER Неавторизована особа Неавторизований проєкт GCP Ingress/Egress Policy Дозволена особа IP адреси VPN чи офісів Корпоративний Wifi Захищені API Проєкт 1 Проєкт 2 Проєкт 3 Звʼязок між сервісами Google Cloud залишається в межах мереж Гугла ouvessvit
  • 15.
    VPC Service Perimeter Захистданих в Google Cloud з VPC Service Controls Інтернет NO_MATCHING_POLICY RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER Неавторизована особа Неавторизований проєкт GCP Ingress/Egress Policy Дозволена особа IP адреси VPN чи офісів Корпоративний Wifi Захищені API Проєкт 1 Проєкт 2 Проєкт 3 Звʼязок між сервісами Google Cloud залишається в межах мереж Гугла ouvessvit
  • 16.
    VPC Service Perimeter Захистданих в Google Cloud з VPC Service Controls Інтернет NO_MATCHING_POLICY RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER Неавторизована особа Неавторизований проєкт GCP Ingress/Egress Policy Дозволена особа IP адреси VPN чи офісів Корпоративний Wifi Захищені API Проєкт 1 Проєкт 2 Проєкт 3 Звʼязок між сервісами Google Cloud залишається в межах мереж Гугла ouvessvit
  • 17.
    VPC Service Perimeter Захистданих в Google Cloud з VPC Service Controls Інтернет NO_MATCHING_POLICY RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER Неавторизована особа Неавторизований проєкт GCP Ingress/Egress Policy Дозволена особа IP адреси VPN чи офісів Корпоративний Wifi Захищені API Проєкт 1 Проєкт 2 Проєкт 3 Звʼязок між сервісами Google Cloud залишається в межах мереж Гугла ouvessvit
  • 18.
    VPC Service Perimeter Захистданих в Google Cloud з VPC Service Controls Інтернет NO_MATCHING_POLICY RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER Неавторизована особа Неавторизований проєкт GCP Ingress/Egress Policy Дозволена особа IP адреси VPN чи офісів Корпоративний Wifi Захищені API Проєкт 1 Проєкт 2 Проєкт 3 Звʼязок між сервісами Google Cloud залишається в межах мереж Гугла ouvessvit
  • 19.
    Bridges: для зʼєднання проєктівв різних периметрах Access Levels: для визначення, хто має доступ та звідки Ingress/Egress Policies: перелік певних API запитів, що можуть перетинати кордони периметру * All IDs and IP addresses are randomly generated Захист даних в Google Cloud з VPC Service Controls ouvessvit VPC Service Perimeter Захищені API Проєкт 1 Проєкт 2 Проєкт 3 Звʼязок між сервісами Google Cloud залишається в межах мереж Гугла
  • 20.
    Налаштовуємо Cloud Run& Cloud Functions ERROR: VPC Service Controls: Request is prohibited by organization’s policy. Мій Проєкт VPC Service Perimeter func-sa my-func1 my- dataset Cloud Functions, Cloud Run та інші безсерверні продукти категорії compute працюють в так званих тіньових проєктах; для забезпечення комунікації з захищеними сервісами даних недостатньо додати їх до одного периметру. ouvessvit
  • 21.
    Налаштовуємо Cloud Run& Cloud Functions Twitter: ouvessvit Мій Проєкт VPC Service Perimeter func-sa my-func1 my- dataset Варіант 1: додати service account функції до спеціального access level, що приєднаний до периметру. Таким чином, запит до датасету прийде від дозволеного користувача, і буде дозволений в периметрі. cloud-functions-access- lvl: - members: - func-sa@my- project.iam.gserviceacc ount.com ouvessvit
  • 22.
    Налаштовуємо Cloud Run& Cloud Functions Мій Проєкт VPC Service Perimeter func-sa my-func1 my- dataset Варіант 2: сконфігурувати функцію в підмережі за використання Serverless VPC Access Connector. Таким чином, для периметру запит виглядатиме як такий, що надійшов з довіреної мережі (мережі того ж проєкта). Serverless VPC connector subnet ouvessvit
  • 23.
    AWS не шифруєза замовчанням
  • 24.
    Налаштовуємо Glue: шифруваннякаталогу AWS Glue S3: бізнес дані Glue logs resource "aws_glue_data_catalog_encryption_settings" "example" { data_catalog_encryption_settings { encryption_at_rest { catalog_encryption_mode = "SSE-KMS" kms_key_arn = data.aws_kms_key.glue_catalog.arn } } } resource "aws_glue_security_configuration" "example" { name = "example" encryption_configuration { cloudwatch_encryption { cloudwatch_encryption_mode = "SSE-KMS" kms_key_arn = data.aws_kms_key.glue_logs.arn } s3_encryption { s3_encryption_mode = "SSE-S3" } } } S3: тимчасове сховище ouvessvit
  • 25.
    Налаштовуємо Glue: шифруваннякаталогу AWS Glue Glue logs resource "aws_glue_data_catalog_encryption_settings" "example" { data_catalog_encryption_settings { encryption_at_rest { catalog_encryption_mode = "SSE-KMS" kms_key_arn = data.aws_kms_key.glue_catalog.arn } } } resource "aws_glue_security_configuration" "example" { name = "example" encryption_configuration { cloudwatch_encryption { cloudwatch_encryption_mode = "SSE-KMS" kms_key_arn = data.aws_kms_key.glue_logs.arn } s3_encryption { s3_encryption_mode = "SSE-KMS" kms_key_arn = data.aws_kms_key.glue_s3.arn } ouvessvit S3: бізнес дані S3: тимчасове сховище
  • 26.
    Налаштовуємо Glue: шифруваннякаталогу AWS Glue Glue logs resource "aws_glue_data_catalog_encryption_settings" "example" { data_catalog_encryption_settings { encryption_at_rest { catalog_encryption_mode = "SSE-KMS" kms_key_arn = data.aws_kms_key.glue_catalog.arn } } } resource "aws_glue_security_configuration" "example" { name = "example" encryption_configuration { cloudwatch_encryption { cloudwatch_encryption_mode = "SSE-KMS" kms_key_arn = data.aws_kms_key.glue_logs.arn } s3_encryption { s3_encryption_mode = "SSE-KMS" kms_key_arn = data.aws_kms_key.glue_s3.arn } ouvessvit S3: бізнес дані S3: тимчасове сховище
  • 27.
    Налаштовуємо Athena: workgroups GlueCatalog data_science > Publish metrics > Bytes scanned per query: 30000000 > Encryption: SSE_S3 > Output location sales > Publish metrics > Bytes scanned per query: 100000000 > Encryption: SSE_S3 > Requester Pays > Bucket owner ACL corp_bi > Publish metrics > Bytes scanned per query: 25000000 > Encryption: SSE_KMS > Output location clients orders products workgroup workgroup workgroup ouvessvit
  • 28.
    Налаштовуємо Athena: workgroups GlueCatalog clients orders products IAM роль: sales_data_analytics workgroup workgroup workgroup data_science > Publish metrics > Bytes scanned per query: 30000000 > Encryption: SSE_S3 > Output location sales > Publish metrics > Bytes scanned per query: 100000000 > Encryption: SSE_S3 > Requester Pays > Bucket owner ACL corp_bi > Publish metrics > Bytes scanned per query: 25000000 > Encryption: SSE_KMS > Output location ouvessvit
  • 29.
  • 31.
  • 32.

Editor's Notes

  • #2 Як захистити хмарну платформу даних Створення хмарної платформи даних з урахуванням безпеки Будуємо хмарну платформу даних з урахуванням безпеки