#amazon-web-services #amazon-cloudformation #aws-lake-formation
#amazon-веб-сервисы #amazon-cloudformation #aws-образование озера
Вопрос:
Я хочу настроить дополнительный уровень безопасности поверх моего озера данных S3 / Glue, используя Lake Formation. Я хочу сделать как можно больше с помощью инфраструктуры в виде кода, поэтому, естественно, я изучил документацию по реализации CloudFormation для Lake Formation, которая в настоящее время, честно говоря, очень бесполезна.
У меня есть простой вариант использования: предоставление разрешения администратора одному IAM-пользователю в одном ведре. Может кто-нибудь помочь мне с примером или чем-нибудь подобным?
Комментарии:
1. Нашли ли вы какой-либо шаблон или пример с момента публикации вашего вопроса?
2. Я добавил ответ с моим текущим шаблоном.
Ответ №1:
Вот что я выяснил:
В настоящее время возможно задать местоположение озера данных и предоставить разрешения на доступ к вашим базам данных. К сожалению, похоже CloudFormation
, что он пока не поддерживается Data locations
. Вам нужно будет предоставить IAM Role
доступ к S3 Bucket
by вручную в консоли AWS в разделе Lake Formation -> Data locations
. Я обновлю ответ, как только CloudFormation
появится дополнительная поддержка.
Это шаблон, который мы используем в данный момент:
DataBucket:
Type: AWS::S3::Bucket
DeletionPolicy: Retain
UpdateReplacePolicy: Retain
Properties:
AccessControl: Private
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: AES256
VersioningConfiguration:
Status: Enabled
LifecycleConfiguration:
Rules:
- Id: InfrequentAccessRule
Status: Enabled
Transitions:
- TransitionInDays: 30
StorageClass: INTELLIGENT_TIERING
GlueDatabase:
Type: AWS::Glue::Database
Properties:
CatalogId: !Ref AWS::AccountId
DatabaseInput:
Name: !FindInMap [Environment, !Ref Environment, GlueDatabaseName]
Description: !Sub Glue Database ${Environment}
GlueDataAccessRole:
Type: AWS::IAM::Role
Properties:
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Sid: ''
Effect: Allow
Principal:
Service: glue.amazonaws.com
Action: sts:AssumeRole
Policies:
- PolicyName: AccessDataBucketPolicy
PolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Action:
- glue:*
- lakeformation:*
Resource: '*'
- Effect: Allow
Action:
- s3:GetObject
- s3:PutObject
- s3:ListBucket
- s3:DeleteObject
Resource:
- !Sub ${DataBucket.Arn}
- !Sub ${DataBucket.Arn}/*
DataBucketLakeFormation:
Type: AWS::LakeFormation::Resource
Properties:
ResourceArn: !GetAtt DataBucket.Arn
UseServiceLinkedRole: true
DataLakeFormationPermission:
Type: AWS::LakeFormation::Permissions
Properties:
DataLakePrincipal:
DataLakePrincipalIdentifier: !GetAtt GlueDataAccessRole.Arn
Permissions:
- ALL
Resource:
DatabaseResource:
Name: !Ref GlueDatabase
DataLocationResource:
S3Resource: !Ref DataBucket