AWS 서비스에 권한을 부여하는 가장 좋은 방법

4414 단어 ec2s3awsiam
AWS IAM 서비스의 경우 최소 권한 액세스를 사용해야 합니다. 보안 목적으로 IAM을 사용하는 것이 가장 좋습니다. IAM 사용자의 경우 그룹 수준에서 정책을 연결하는 것이 모범 사례입니다. "특정"AWS 서비스의 경우 IAM 역할은 대상에 대한 원본 및 IAM 정책에 대한 권한을 부여하는 가장 좋은 방법입니다.

예를 들어:
  • IAM 역할을 사용하여 EC2 인스턴스에 대한 권한을 부여합니다. 버킷 나열 또는 생성과 같은 S3 액세스 권한을 부여합니다.
  • IAM 정책을 사용하여 모든 소스의 액세스만 허용합니다. 정적 웹 사이트 목적을 위해 특정 버킷에 대한 공개 액세스를 허용한다고 가정해 보겠습니다.

  • 여기서 IAM 역할인 첫 번째 옵션을 보여드리겠습니다!

    1. EC2 인스턴스 생성
    여기에서는 Amazon Linux 2를 AMI로 사용하여 CLI를 통해 EC2 인스턴스를 생성하고 나머지는 그대로 기본값을 사용하도록 둡니다. 그 전에 키 페어도 가져오겠습니다.

    $ aws ec2 import-key-pair --key-name "ec2-user" --public-key-material fileb://home/nurulramadhona/.ssh/id_rsa.pub
    $ aws ec2 run-instances --image-id ami-021fb2b73ff1efc96 --count 1 --instance-type t3.micro --key-name ec2-user
    $ aws ec2 describe-instances --query 'Reservations[].Instances[].{PublicIP:PublicIpAddress, ID:InstanceId}'
    [
        {
            "PublicIP": "108.136.45.150",
            "ID": "i-0f3df2b1eb51bc6a1"
        }
    ]
    


    2. IAM 역할 생성 및 정책 연결
    신탁 문서:

    $ cat ec2-role.json 
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "ec2.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    



    $ aws iam create-role --role-name ec2-role --assume-role-policy-document file://ec2-role.json
    $ aws iam attach-role-policy --role-name ec2-role --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
    


    3. 인스턴스 프로필 생성 및 역할 추가
    인스턴스 프로필은 인스턴스가 시작될 때 EC2 인스턴스에 역할 정보를 전달하는 데 사용할 수 있는 IAM 역할의 컨테이너입니다. 인스턴스 프로파일당 하나의 역할만 가질 수 있다는 점에 유의하십시오.

    $ aws iam create-instance-profile --instance-profile-name ec2-profile
    $ aws iam add-role-to-instance-profile --role-name ec2-role --instance-profile-name ec2-profile
    


    4. 인스턴스 프로필을 EC2 인스턴스에 연결

    aws ec2 associate-iam-instance-profile --instance-id i-0f3df2b1eb51bc6a1 --iam-instance-profile Name=ec2-profile
    aws ec2 describe-iam-instance-profile-associations
    


    점검 해보자!
    전에:

    $ ssh [email protected] 
    
           __|  __|_  )
           _|  (     /   Amazon Linux 2 AMI
          ___|\___|___|
    
    https://aws.amazon.com/amazon-linux-2/
    4 package(s) needed for security, out of 5 available
    Run "sudo yum update" to apply all updates.
    [ec2-user@ip-172-31-0-125 ~]$ aws s3 ls
    Unable to locate credentials. You can configure credentials by running "aws configure".
    


    후에:

    [ec2-user@ip-172-31-0-125 ~]$ aws s3 ls
    [ec2-user@ip-172-31-0-125 ~]$ aws s3 mb s3://bucket-ec2-role
    make_bucket failed: s3://bucket-ec2-role An error occurred (AccessDenied) when calling the CreateBucket operation: Access Denied
    


    5. 최소 권한 액세스
    위에서 볼 수 있듯이 버킷(현재 비어 있음)을 나열할 수 있지만 오류Access Denied가 있는 버킷을 생성할 수 없습니다. 정말 필요한 경우 IAM 역할에 정책을 하나 더 연결할 수 있습니다. 이것은 필요에 따라 권한을 부여하는 것을 의미합니다. 자, 해보자!

    $ aws iam attach-role-policy --role-name ec2-role --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
    



    [ec2-user@ip-172-31-0-125 ~]$ aws s3 mb s3://bucket-ec2-role
    make_bucket: bucket-ec2-role
    [ec2-user@ip-172-31-0-125 ~]$ aws s3 ls
    2022-05-26 02:43:47 bucket-ec2-role
    


    그런 다음 정책이 더 이상 필요하지 않으면 분리할 수도 있습니다.

    $ aws iam detach-role-policy --role-name ec2-role --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
    



    [ec2-user@ip-172-31-0-125 ~]$ aws s3 mb s3://bucket-ec2-role2
    make_bucket failed: s3://bucket-ec2-role2 An error occurred (AccessDenied) when calling the CreateBucket operation: Access Denied
    


    추가의:
    IAM 역할을 삭제하려는 경우 다음이 있는지 확인하십시오.
  • 인스턴스 프로파일을 삭제하기 전에 인스턴스 프로파일에서 역할을 제거하십시오.
  • 인스턴스 프로필을 삭제합니다.
  • 역할에서 모든 정책을 분리합니다.

  • 그게 다야! 와주셔서 감사합니다. 귀하의 의견을 기다리겠습니다. 내 새 게시물이 게시될 때 알림을 받으려면 나를 팔로우하세요!

    좋은 웹페이지 즐겨찾기