Open oryondark opened 6 years ago
우리가 접근 권한이 필요한 다른 계정에게 보내줘서, 해당 계정에서 따라하면 그대로 우리 계정으로 접근권한을 주게 히는게 목적이니까, 그에 맞게 만들면 될것 같아.
boto3 나 cli 쪽은 없어도 괜찮지 않을까? 전에 얘기 들어보니 AWS console에서만이라도 사용 가능해보이던데.
네 교수님. CLI나 Boto3는 역할전환된 계정을 통해 컨트롤 하기 위한 것이고, 역할전환을 위한 Policy랑 Role은 전부 콘솔에서 작성 가능합니다.~
그래도 사용하는 사람들이 정상적으로 역할전환이 되는지, 간단하게 검증할 수 있는 방법이 필요할 것 같습니다. 이 부분은 프로그래밍 적인 부분보다 단순 검증용으로 Terminal에서 CLI로 Master 계정의 InstanceID를 가져오는 정도로 추가하겠습니다.
다음은 구글 프레젠테이션 주소 입니다. for Client for Master
문서는 PDF로 출력하여 슬렉에 업로드했습니다!
본 역할전환에 필요한 최소 권한 목록입니다.
CloudWatch Metric "cloudwatch:ListMetrics", "cloudwatch:GetMetricData", "cloudwatch:GetMetricStatistics"
EC2 Instance Information "ec2:DescribeInstances"
SSM Command "ssm:SendCommand"
Role assign "iam:PassRole"
원격 사용자가 IAM 생성 및 관리를 지정된 Role만 가능하도록 다음과 같이 Json 정책을 생성했습니다. 아래의 정책은 Master 측에서 작성할 Json 정책에 추가로 사용될 정책입니다.
{
"Effect": "Allow",
"Action": [
"iam:CreateRole",
"iam:PassRole"
],
"Resource": "arn:aws:iam::741926482963:role/agent_server_role"
},
{
"Effect": "Allow",
"Action": [
"iam:CreateInstanceProfile",
"iam:AddRoleToInstanceProfile"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"iam:AttachRolePolicy"
],
"Resource": "arn:aws:iam::741926482963:role/agent_server_role",
"Condition": {
"StringLike": {
"iam:PolicyARN": [
"arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforSSM",
"arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy"
]
}
}
}
createRole과 passRole의 규칙을 특정 이름을 가진 IAM Role만 가능하도록 지정했습니다. 따라서 원격사용자는 agent_server_role 이외의 이름으로 Role을 생성 및 관리할 수가 없습니다.
Role을 생성할 때, 적용가능한 Policy을 제한하였습니다. iam:PolicyARN을 대소문자를 구분하여 조건(StringLike)을 지정하여, 2개의 정책 AmazonEC2RoleforSSM 및 CloudWatchAgentServerPolicy 외 어떠한 Policy도 사용할 수 없도록 제한하였습니다.
Policy를 attach 할 수 있는 Role을 제한하였습니다.
간단한 Assume-Role 구현법 PPT 작성하기
교수님 Boto3로 구현한 간단한 예까지 추가할까요?? 아니면 간단하게 CLI 까지만 구현한 예로 만들까요?