[AWS][CFn]IAM 설정

7111 단어 IAMCloudFormationAWS

소개



안녕하세요. 친숙합니다.
계속해서, 클래스 메소드씨의 블로그 기사, AWS 어카운트를 만들면 먼저 할 일 ~영화 원년판~ 를 참고로 해, AWS에서의 초기 설정을 CloudFormation에서 실시해 갑니다.
이번에는 "IAM 설정"을 CloudFormation에서 실시합니다. IAM은 AWS를 사용하는데 있어서 가장 중요하다고 해도 과언이 아니다고 생각합니다. 그 설정이 조금이라도 편해지면.

전제



이번에는 특정 IP에서만 액세스할 수 있습니다. 단, 특정 IP로부터의 액세스만으로 제한해 버리면, AWS 내부의 통신(예를 들면 EBS의 암호화)도 제한해 버리게 되기 때문에 이하의 조건으로 설정합니다.
  • 콘솔에 로그인 한 후 스위치 역할을 수행하고 모든 역할로 전환합니다.
  • 위의 스위치 역할은 특정 IP에서만 실행할 수 있도록 제한합니다.
  • 스위치를 롤링 한 후에는 IP 주소 제한이 없으며 임의의 작업을 수행 할 수 있습니다.

    이번에는 AdministartorAccess의 IAM 정책을 예로 사용하여 모든 권한이 있는 그룹을 만듭니다.
    샘플 코드로 실시하고 있는 것은 이하입니다.
  • IAM 그룹 (관리자) 만들기
  • IAM 정책 (OnlyMyIPAccess, AssumeAdministrator) 만들기
  • IAM 역할(Administrator) 만들기

  • 샘플 코드


    ---
    AWSTemplateFormatVersion: 2010-09-09
    Description: IAM - Group, Role, Policy for Administrator
    
    #------------------------------
    # Resources: Your resource list
    #------------------------------
    Resources:
      # IAM(Group) Resource
      ## Administrator
      GroupAdministrator:
        Type: AWS::IAM::Group
        Properties:
          GroupName: Administrator
          ManagedPolicyArns: 
          - !Ref AssumeAdministrator
          - !Ref OnlyMyIPAccess
    
      # IAM(Policy) Resource
      ## Group's Policy -- MyIPAccess
      OnlyMyIPAccess:
        Type: AWS::IAM::ManagedPolicy
        Properties:
          PolicyDocument:
            Version: 2012-10-17
            Statement:
            - Effect: Deny
              Action: "*"
              Resource: "*"
              Condition:
                NotIpAddress:
                  aws:SourceIp:
                  - xxx.xxx.xxx.xxx/32 # ここは任意のIPアドレスに修正してください。
    
      ## Group's Policy -- Administrator
      AssumeAdministrator:
        Type: AWS::IAM::ManagedPolicy
        Properties:
          PolicyDocument:
            Version: 2012-10-17
            Statement:
            - Effect: Allow
              Action: sts:AssumeRole
              Resource: !GetAtt RoleAdministrator.Arn
    
      # IAM(Role) Resource
      ## Administrator
      RoleAdministrator:
        Type: AWS::IAM::Role
        Properties:
          RoleName: Administrator
          AssumeRolePolicyDocument:
            Version: 2012-10-17
            Statement:
            - Effect: Allow
              Action: sts:AssumeRole
              Principal:
                AWS: !Sub ${AWS::AccountId}
          ManagedPolicyArns:
          - arn:aws:iam::aws:policy/AdministratorAccess
          Path: "/"
    

    실행 결과



    이제 언제나 그렇게 만든 리소스를 살펴 보겠습니다.
  • IAM 그룹 (관리자) 만들기
  • IAM 정책(OnlyMyIPAccess, AssumeAdministrator) 만들기
  • IAM 역할(Administrator) 만들기

  • 이번에는 작성한 리소스가 아니라 동작을 살펴 보겠습니다.
  • MyIP로부터 로그인한 직후 ※describeInstances의 권한이 없는 것을 알 수 있습니다.
  • 스위치 롤 후 ※describeInstances의 권한이 부여되어 있는 것을 알 수 있습니다.

  • 요약



    이번에는 자사의 사무실 이외에서는 액세스하고 싶지 않다는 장면을 상정하여 특정 IP에서만 로그인을 좁히는 방법으로 IAM을 구축해 보았습니다. 다만, 이 방법이라고 한 번 스위치 롤 한 후, 그 상태를 유지한 채 IP가 바뀌어도 로그인은 유지되기 때문에 조작이 가능해집니다(그런 장면은 드물다고 생각합니다만). 그렇다면 IAM 역할의 인증이 만료된 1시간 후인지 사용자가 로그아웃하기를 기다릴 수밖에 없을까 생각합니다.
    IAM의 구성에 대해서는, 개인적으로는 중첩 스택을 사용하면 조금 구조를 알기 쉬워질까라고 생각하기 때문에, 다음번은 IAM의 설정을 중첩 스택으로 해 보는 것을 보내려고 합니다 노시

    좋은 웹페이지 즐겨찾기