kmu-leeky / crc-research

0 stars 1 forks source link

IAM Assume-Role PPT #31

Open oryondark opened 6 years ago

oryondark commented 6 years ago

간단한 Assume-Role 구현법 PPT 작성하기

  1. Assume-Role
  2. Get Account number
    • Master Root and Client Root
  3. create IAM Role&Policy
  4. CLI test

교수님 Boto3로 구현한 간단한 예까지 추가할까요?? 아니면 간단하게 CLI 까지만 구현한 예로 만들까요?

kmu-leeky commented 6 years ago

우리가 접근 권한이 필요한 다른 계정에게 보내줘서, 해당 계정에서 따라하면 그대로 우리 계정으로 접근권한을 주게 히는게 목적이니까, 그에 맞게 만들면 될것 같아.

boto3 나 cli 쪽은 없어도 괜찮지 않을까? 전에 얘기 들어보니 AWS console에서만이라도 사용 가능해보이던데.

oryondark commented 6 years ago

네 교수님. CLI나 Boto3는 역할전환된 계정을 통해 컨트롤 하기 위한 것이고, 역할전환을 위한 Policy랑 Role은 전부 콘솔에서 작성 가능합니다.~

그래도 사용하는 사람들이 정상적으로 역할전환이 되는지, 간단하게 검증할 수 있는 방법이 필요할 것 같습니다. 이 부분은 프로그래밍 적인 부분보다 단순 검증용으로 Terminal에서 CLI로 Master 계정의 InstanceID를 가져오는 정도로 추가하겠습니다.

oryondark commented 6 years ago

다음은 구글 프레젠테이션 주소 입니다. for Client for Master

문서는 PDF로 출력하여 슬렉에 업로드했습니다!

oryondark commented 6 years ago

본 역할전환에 필요한 최소 권한 목록입니다.

  1. CloudWatch Metric "cloudwatch:ListMetrics", "cloudwatch:GetMetricData", "cloudwatch:GetMetricStatistics"

  2. EC2 Instance Information "ec2:DescribeInstances"

  3. SSM Command "ssm:SendCommand"

  4. Role assign "iam:PassRole"

oryondark commented 6 years ago
  1. 원격 사용자가 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"
                    ]
                }
            }
        }
  2. createRole과 passRole의 규칙을 특정 이름을 가진 IAM Role만 가능하도록 지정했습니다. 따라서 원격사용자는 agent_server_role 이외의 이름으로 Role을 생성 및 관리할 수가 없습니다.

  3. Role을 생성할 때, 적용가능한 Policy을 제한하였습니다. iam:PolicyARN을 대소문자를 구분하여 조건(StringLike)을 지정하여, 2개의 정책 AmazonEC2RoleforSSM 및 CloudWatchAgentServerPolicy 외 어떠한 Policy도 사용할 수 없도록 제한하였습니다.

  4. Policy를 attach 할 수 있는 Role을 제한하였습니다.

Resource는 Action에 속하는 규칙이 사용할 수 있는 자원(ARN , User, etc..)이며,
Condition은 Action이 사용할 수 있는 정책을 반영합니다.