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
[email protected]: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/*”]
},}]}
[email protected]: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