[AWS]AWS 권한 관리

김윤섭·2024년 7월 16일
1
post-thumbnail

IAM: AWS 리소스에 대한 접근을 안전하게 제어하는 서비스

AWS 로그인 - IAM - 사용자

유저(User): AWS 서비스와 상호작용하는 개별 사용자 또는 애플리케이션

사용자에게 권한은 그룹을 만들어서 관리할수도 있고 직접 연결할수도 있다. 추후에 진행가능함.

그룹(Group): 여러 IAM 사용자를 모아 관리하는 단위

사용자 그룹은 권한 및 정책을 묶어서 관리할수 있게 해준다.

IAM 유저로 접속하면 아무런 권한도 없으므로 어떤 서비스도 이용할 수 없다. 심지어 보는것조차 불가능하다.

그러기 위해서는 정책이 필요한데, 정책이란

정책(Policy): AWS 리소스에 대한 액세스 권한을 정의하는 JSON 문서

사전에 설정된 정책도 있고 사용자가 상황에 맞게 직접 정책을 생성할 수도 있다.

직접 토글을 선택해서 권한을 설정해줄수도 있고 json 문서로 한번에 정책을 작성할 수도 있다. 편한대로 하면 된다.

모든 S3 버킷 목록 조회 권한 부여 정책

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListAllMyBuckets"
      ],
      "Resource": "*"
    }
  ]
}

특정 버킷의 목록 조회 권한 부여 정책

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": "arn:aws:s3:::example-bucket"
    }
  ]
}

특정 버킷의 객체 조회 및 업로드 권한 부여 정책

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::example-bucket/*"
    }
  ]
}

원래는 이렇게 유저id나 리전 명시해야 한다. AWS 정책에서 리전을 명시하지 않으면 그 정책은 기본적으로 모든 리전에 적용되어버린다.

arn:partition:service:region:account-id:resource

인스턴스 생성해보고 거기서 테스트 파일 올려보기

인스턴스 만드는법

이번에는 만들때 우분투가 아닌 아마존 리눅스로 os를 만든다. 터미널에서 진행하면 된다.

역할을 만든다.

역할(Role): 특정 권한을 가진, AWS 리소스나 외부 사용자가 임시로 맡을 수 있는 자격 증명


만들어둔 역할 인스턴스에 적용

sudo su 로 터미널에 접속
현재는 버킷에 아무것도 없다

S3: 인터넷 상에서 데이터를 저장하고 검색할 수 있는 객체 스토리지 서비스


위 명령어를 입력하면

echo "테스트 파일입니다" > testfile.txt
aws s3 cp testfile.txt s3://<버킷이름>/
S3 버킷 내용 확인:

sh
코드 복사
aws s3 ls s3://<버킷이름>/
S3 버킷에서 파일 다운로드 및 내용 확인:

sh
코드 복사
aws s3 cp s3://<버킷이름>/testfile.txt downloaded_testfile.txt
cat downloaded_testfile.txt

!

다운로드 받은 파일의 내용을 확인해볼수 있다

다음과 같은 명령어를 통해 1시간동안만 접근 권한을 줄 수도 있다.

aws sts getsessiontoken -serialnumber arn aws iam::123456789012:mfa/YourMFADeviceName - token code 123456 - duration seconds 3600

트러블슈팅 및 결론

인스턴스를 어제와 같이 실행했는데도 터미널에서 접속이 안되서 시간이 지체됐었는데 알고보니 라우팅 테이블에 인터넷 게이트웨이 연결을 안해놨었다.
아직은 인스턴스를 설정하는데 부족함이 많다는 것을 알았고 s3 버킷은 실무에서도 많이 사용되는 서비스이고 처음부터 루트 사용자로 시작하지는 않을테니 IAM에 대한 이해를 더 깊게 해야겠다.

0개의 댓글