DevSecOps in Multi Account

Preview:

Citation preview

DevSecOps inMulti-Account

Tomoaki SakatokuSolutionsArchitect

AmazonWebServiceJapan

WhoIam…

酒徳 知明 (Tomoaki Sakatoku)PartnerSolutionsArchitect

• Ecosystem• DevSecOps

Multi-AccountStrategy

運⽤

構成変更時の影響範囲を⼩さくし、他の組織を気にすることなく⾃⾝固有の環境を利⽤したい

マルチ アカウントを⽤いる主な理由AWSアカウントを分割して運⽤するようになる主な理由:

組織

リソースの操作権限を特定の業務ユニット(LOB)に委譲し、その中でより⾃由にAWSプラットフォームを活⽤したい

ガバナンス 課⾦

課⾦に関する可視性、責任、及びアカウントごとのコントロールを⾏いたい例)LOBごとに課⾦を明確に分けたいなど

セキュリティ及びガバナンス上の理由から開発環境、テスト環境、本番環境でアカウントを分割したい例)PCI準拠のワークロードなど

http://worldnewsdailyreport.com/usa-mother-gives-birth-to-17-babies-at-once/

MultiAccountの前に...

IdentityAccessManagement- IAM

• ユーザ/クレデンシャル管理• IAMユーザ / パスワード• MFA (多要素認証)• クレデンシャルのローテーション

• アクセス権限管理• IAMグループ• IAMポリシー

• 権限の委任と監査• IAMロール• Security Temporary Token

prod@example.comAcctID:111122223333

ec2ロール

{ "Statement": [{"Effect": "Allow","Action": "ec2:RunInstances","Resource": [

"arn:aws:ec2:*::image/ami-*","arn:aws:ec2:*:*:network-interface"arn:aws:ec2:*:*:instance/*","arn:aws:ec2:*:*:subnet/*","arn:aws:ec2:*:*:key-pair/*","arn:aws:ec2:*:*:security-group/*”]

},}]}

dev@example.comAcctID:123456789012

devday のAccess Keyによる認証

{ "Statement": [{"Effect": "Allow","Action": "sts:AssumeRole","Resource":

"arn:aws:iam::111122223333:role/ec2-role"}]}

{ "Statement": [{"Effect":"Allow","Principal":{"AWS":"123456789012"},"Action":"sts:AssumeRole"

}]}

IdentityAccessManagement- IAMRole&STS

ec2 ロールの信頼関係

devday にアサインされている IAM Role

IAMUser:devday

ec2 ロールの権限

STS

EC2

アカウント A アカウント B

ec2 ロール⽤に⼀時的に利⽤可能なクレデンシャルを発⾏

IAM- AssumeRoleによるクレデンシャルの⽣成

SecurityatScaleInfrastructureasacode

管理者アカウント

IAMUsers

UsersStack

ターゲットアカウント

adminrole

billingrole

readonlyrole

BaselineStack

OverviewofBaselineDesign

SecurityStack

AdminMasterStack

BaselineStack BaselineStack

adminrole

billingrole

readonlyrole

adminrole

billingrole

readonlyrole

ターゲットアカウント

ターゲットアカウント

TargetAccountBaselineTemplate

• IAMRoleの作成• AssumeRoleに利⽤

• 設定サービス• CloudTrail (globalandlocal)• Config• S3AccessLogging• CloudTrailtoCloudWatchLogs• SNSForSlackIntegration(APIGWEndpoint)

adminrole

billingrole

readonlyrole

baselinestack

ターゲットアカウント

CodeHighlights– LambdaFunctionのデプロイ

IAMUsers

AdminAccountBaselineDesign

AmazonCloudWatch

AWSConfig

ConfigRules

AWSCloudTrail

CloudWatchEvents

AWSIAM

ManagedPolicies

Roles

AWSlambda

AmazonAPIGW

AmazonDynamoDB

管理者アカウント

UsersStack

SecurityStack

AdminStack

AWSCloudFormation

StepFunction

Cross-accountCloudWatch Eventsoverview

Managed account Consolidated admin account

API call CloudWatch event

regional SNS topic

Publishes event

Lambda event handler

Subscribes to

Remediation workflow(Step Functions state machine)

Remediation tasksSupervisorAdminRole

Assumes

API Gateway

HTTPS

(x-region)

管理者アカウント

IAMUsersAdmin

CrossAccountDeployment

Cloudformation Template Lambdazip

StepFunctionStateMachine

BaselineStack

AdminRole

ターゲットアカウント

1.AssumeRole

2.Create/UpdateStack

3.Waitsforstack

AmazonStepFunctionCrossRegion

AmazonStepFunction- StateMachine-

SimpleisthebestJ

AmazonCloudFormation

• Infrastructureasacode• ChangeSet Support• StackSet Support

• Admin:AWSCloudFormationStackSetAdministrationRole

• Target:AWSCloudFormationStackSetExecutionRole

DemoJ

Recommended