최소한의 AWS IAM Policy로 AWS 미디어 서비스를 운영하고 싶습니다!

안녕하세요
streampack의 risako입니다
올해 4월에 20신졸이 입사해, 드디어 나도 사회인 2년째가 되었습니다.
시간이 지나는 것은 순식간입니다. 20 신졸에 지지 않도록 앞으로도 지식을 흡수하고 싶습니다! !

이번 테마는 IAM Policy에 관한 것입니다.
AWS Cloud Practitioner의 시험에도 나올 정도의 기초 지식이지만, 의외로 안쪽이 깊다는 인상입니다.

IAM Policy란?



IAM Policy란, IAM User나 IAM Group 작성 후에는 권한이 부여되어 있지 않은 상태이기 때문에, 새롭게 부여해 주는 권한입니다.
이 때 사용자에게 부여하는 권한은 최소한의 권한이나 작업을 수행하는 데 필요한 권한만 부여하는 것이 이상적입니다.
단번에 전부의 행동을 허가해 버리지 말아요
만약 최소한의 권한 이상의 태스크의 실행이 필요한 경우에는 그때마다 Policy를 추가해 갑니다.

이제 최소한의 작업을 수행할 수 있는 정책을 만들어 봅시다!

실행할 수 있는 것은 이것뿐!


  • MediaLive 시작/중지
  • MediaLive 설정 변경
  • MediaPackage 설정 변경(Startover window ON/OFF)

  • Let's try!


  • MediaLive 작업에 필요한 것
  •             "Action": [
                    "medialive:ListInputs",
                    "medialive:ListInputSecurityGroups",
                    "medialive:ListChannels",
                    "medialive:DescribeInput",
                    "medialive:DescribeInputSecurityGroup",
                    "medialive:DescribeChannel",
                    "medialive:UpdateChannelClass",
                    "medialive:UpdateInputSecurityGroup",
                    "medialive:UpdateInput",
                    "medialive:UpdateChannel",
                    "medialive:StartChannel",
                    "medialive:StopChannel"
                ],
    
  • MediaPackage 작업에 필요한 것
  •             "Action": [
                    "mediapackage:ListTagsForResource",
                    "mediapackage:ListOriginEndpoints",
                    "mediapackage:ListChannels",
                    "mediapackage:DescribeOriginEndpoint",
                    "mediapackage:DescribeChannel",
                    "mediapackage:UpdateChannel",
                    "mediapackage:UpdateOriginEndpoint"
                ],
    

    이 정책을 할당한 사용자로 콘솔에 로그인합니다.
  • MediaLive
    Start/Stop이 가능했습니다.
    단지 권한이 부족해서 설정 변경은 할 수 없습니다.
    설정을 변경하면 IAM role 부분에 오류가 발생합니다.
    이번에는 사용하지 않지만 Harvest jobs에도 같은 오류가 발생합니다.
  • MediaPackage
    Startover window의 ON·OFF는 할 수 있습니다만, API에 접속할 수 없는 에러와 CloudFront Distribution에도 같은 에러가 나와 있습니다.


  • 이 오류를 지우고 싶습니다!


  • MediaLive
    설정을 변경할 수 없는 이유는 "iam:PassRole"iam:ListRoles가 부족하기 때문입니다.
    이 권한이 없으면 설정을 변경할 수없는 것 같습니다.
  • MediaPackage
    먼저 CloudFront Distribution 오류는 단순히 Distributtion을 로드할 수 있는 권한을 부여하기만 하면 됩니다. 그래서 다음을 추가.
    "cloudfront:GetDistribution",
    "cloudfront:CreateDistributionWithTags",
    "cloudfront:ListDistributions"
    다음은 API 오류입니다.
    에러 내용을 보면 권한이 부족하지 않은 것 같으므로, 아래를 추가."tag:GetResources"
    "health:DescribeEventAggregates",
    "cloudwatch:GetMetricData",
    "cloudwatch:GetMetricStatistics"
    Harvest jobs 오류는 아래의 권한 추가로 사라졌습니다."mediapackage:ListHarvestJobs"*추가하면 「식별되지 않는 액션」이라고 표시되어 버립니다만, 권한은 부여되고 있는 것 같습니다.

  • 최종 정책



    이번에 수행하려는 작업에 필요한 최소한의 정책은 이것뿐이었습니다.
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": [
                    "tag:GetResources",
                    "medialive:UpdateInput",
                    "cloudwatch:GetMetricData",
                    "medialive:StartChannel",
                    "medialive:StopChannel",
                    "medialive:DescribeInputSecurityGroup",
                    "medialive:DescribeInput",
                    "cloudfront:GetDistribution",
                    "medialive:UpdateChannelClass",
                    "iam:PassRole",
                    "mediapackage:ListHarvestJobs",
                    "health:DescribeEventAggregates",
                    "medialive:ListInputSecurityGroups",
                    "medialive:ListChannels",
                    "medialive:DescribeChannel",
                    "mediapackage:DescribeChannel",
                    "mediapackage:UpdateOriginEndpoint",
                    "medialive:ListInputs",
                    "medialive:UpdateChannel",
                    "mediapackage:ListTagsForResource",
                    "iam:ListRoles",
                    "cloudfront:CreateDistributionWithTags",
                    "cloudwatch:GetMetricStatistics",
                    "mediapackage:DescribeOriginEndpoint",
                    "mediapackage:UpdateChannel",
                    "mediapackage:ListChannels",
                    "medialive:UpdateInputSecurityGroup",
                    "cloudfront:ListDistributions",
                    "mediapackage:ListOriginEndpoints"
                ],
                "Resource": "*"
            }
        ]
    }
    

    마지막으로



    이번에 다시 Policy와 마주보고 보았던 것은 하나의 서비스에 여러 서비스가 연결되어 있었기 때문에, 생각했던 것 이상으로 최소한의 Policy를 설정하는 것이 어려웠다는 것입니다.
    아무도 시행착오해서 Policy를 추가하고 있는 동안 어디까지가 '최소한 권한'인지 몰라지는 일이 있었기 때문에 '무엇을 실행할 수 있고 무엇을 실행할 수 없다'는 것을 확인하면서 Policy 설정해야한다고 느꼈습니다.

    끝까지 읽어 주셔서 감사합니다

    참고



    [IAM의 보안 모범 사례]
    htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / 아니 M / 아 st / 우세 r 구이 데 / 베 stp 등 c 치세 s. HTML

    좋은 웹페이지 즐겨찾기