아마존 서비스를 이용하는데에는 총 3가지 방법이 있다.


aws Console                AWS CLI            AWS SDK


콘솔은 웹에서 사용하는 것이고, CLI는 말그대로 aws용 command Line Interface이다.  aws sdk는 각종 프로그래밍 언어등에서 aws를 제어할 수 있도록 제공하는 sdk이다. 뭐, 결국은 모든 것은 aws의 api에 의해서 제어된다. 


aws Console의 경우 사용하기 쉽지만, 제어나 자동화하기에는 한계가 있기 때문에, aws sdk를 통해서 시스템 구축을 자동화 하는것이 맘 편할 것이다.(난이도는 더 높다..)


https://play.google.com/store/apps/details?id=com.amazon.aws.console.mobile

위처럼 모바일 콘솔도 있다 ^ㅇ^


위와 같은 서비스를 사용하기 위해서는 사용자는 자신이 누구인지 인증을 해야하는데, 이를 위해서 사용하는것이 IAM이다. IAM은 aws 계정과 관련된 권한을 제어하고, 관리기능을 제공한다. 



IAM 객체는 두가지 영역으로 구성되는데, 사용자를 정의하는 단위인 IAM User, IAM Group, IAM Role영역이고, 다른 하나는 권한을 정의하는 IAM Policy 영역이다. 


aws 계정을 생성하게 되면, 이 계정은 루트 계정이 된다. 


한 회사에서 관리하는 리소스를 여러 계정에 배치해놓고 쓰기에는 과금도 그렇고 여러므로 불편함으로, 일반적으로 이 루트계정이 권한을 나눈 새로운 유저를 만들어 회사내의 사람에게 분배하는 방식으로 관리를 하게된다. 각각의 사용자에게 직무에 맞는 IAM Policy를 부여함으로서 Human Error를 줄이고, 보안 위협을 사전에 방지한다. 



IAM User


 IAM User는 사용자로서, 여러개의 권한을 할당 받을 수 있고, 또한 IAM GROUP에 속할 수 있다. 유저는 말 그대로 유저로서, 루트에게 받은 권한을 사용할 수 있다. IAM User의 경우에는 aws management console의 로그인 용으로 사용하는 username/password방식을 설정할 수 있고, 또한 accessKey/SecretKey를 설정할 수 있다. 필요에 따라 선택해서 사용하면 된다.


 IAM Group

 IAM Group은 Policy를 미리 설정해두고, User를 넣다 뺐다 할 수 있다. 활용 용도로는 각 부서별로 필요로하는 공통된 권한이 있다면, 해당 부서 명으로 그룹을 만들어서 부서원들의 IAM User를 group안에 넣어주면 되시겠다. (여러개의 유저마다 권한을 설정하기 귀찮으니까)


IAM Role

 IAM Role는 시간부로 권한을 부여한 '역할'로 시간이 지나면 만료 된다. 작동 방식은 어떤 Trusted Entities(주로 아마존 서비스들)가 STS에 임시키를 요청해서 임시키를 발급 받고, 발급받은 임시키로 aws api를 사용한다. 이 키들은 주기적으로 만료되기 때문에, 영구히 유지되는 IAM User에 비해서 보안성이 높다.




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
  "Version""2012-10-17",
  "Statement": [
    {
      "Sid""FirstStatement",
      "Effect""Allow",
      "Action": ["iam:ChangePassword"],
      "Resource""*"
    },
    {
      "Sid""SecondStatement",
      "Effect""Allow",
      "Action""s3:ListAllMyBuckets",
      "Resource""*"
    },
    {
      "Sid""ThirdStatement",
      "Effect""Allow",
      "Action": [
        "s3:List*",
        "s3:Get*"
      ],
      "Resource": [
        "arn:aws:s3:::confidential-data",
        "arn:aws:s3:::confidential-data/*"
      ],
      "Condition": {"Bool": {"aws:MultiFactorAuthPresent""true"}}
    }
  ]
}
cs



 일반 정책 구조


Policy 문법이다.


Sid는 정책에 관한 설명(아이디)

Effect는 Allow(허가)/Deny(거부) 둘 중 하나를 선택하게된다 거부는 허가보다 우선된다. 

Principal은 API Access가 가능한 계정, 또는 ARN을 서술한다

Action은 사용 가능한 API들의 리스트들이다. 

Resource 는 API 타겟이 될 리소스이다. 마찬가지로 ARN으로 서술한다

Condition은 세부 설정 조건이다.




arn은 aws는 Amazon Resource Name의 약자로, 이름 그대로 리소스의 이름을 뜻하는데, 아마존에서 사용가능한 리소스들은 저마다 구분할 수 있는 arn을 가지고 있다. 


'개발 > AWS' 카테고리의 다른 글

공짜로 서비스 배포하기 Lambda로 서비스 배포하기 (1)  (0) 2023.02.05
aws 시작하기  (0) 2017.08.17
aws에서 결제 알람 받기  (0) 2017.01.23
AWS 준비하기  (0) 2016.10.23

+ Recent posts