Set up AWS Accounts
AWS 계정 설정을 위한 간단하고 안전한 가이드입니다.
AWS 계정 설정하기
예상대로 AWS 계정을 설정하는 방법은 여러 가지가 있습니다. 하지만 기본 프로세스는 팀에게 더 편리하게 만들어 줄 몇 가지 요소를 놓치고 있습니다.
이상적인 설정은 여러 AWS 계정을 단일 AWS Organization 아래에 그룹화하는 것입니다. 팀은 SSO를 통해 콘솔과 CLI에 접근할 수 있습니다.
이 과정이 복잡해 보일 수 있지만, 한 번만 설정하면 다시 생각할 필요가 없는 일회성 작업입니다.
시작해 보겠습니다.
관리 계정
첫 번째 단계는 관리 계정을 생성하는 것입니다.
- 회사 이메일 별칭을 사용하여 시작하세요. 예를 들어
aws@acme.com과 같은 이메일을 사용하면 실제 이메일로 전달됩니다. 이렇게 하면 나중에 다른 사람들에게 접근 권한을 부여할 수 있습니다. - 계정 이름은 회사 이름으로 설정하세요. 예를 들어
acme와 같이 설정합니다. - 결제 정보를 입력하고 신원을 확인하세요.
- 기본 지원을 선택하세요. 나중에 업그레이드할 수 있습니다.
완료되면 로그인하여 AWS 콘솔에 접근할 수 있어야 합니다.
이 자격 증명은 매우 강력합니다. 이 가이드를 완료한 후에는 거의 사용할 일이 없을 것입니다. 비밀번호를 버려도 괜찮습니다. 필요할 때 언제든지 비밀번호 재설정을 할 수 있습니다.
이 계정에는 IAM Identity Center 외에는 아무것도 배포되지 않습니다. IAM Identity Center는 조직 내 사용자를 관리하는 방법입니다.
AWS Organization
다음으로 조직을 생성합니다. 이를 통해 여러 AWS 계정을 함께 관리할 수 있습니다. 개발(dev)과 운영(prod)을 위한 별도의 계정을 생성할 때 필요합니다.
검색창에서 AWS Organization을 검색하여 대시보드로 이동한 후 조직 생성을 클릭합니다.
관리 계정이 이미 조직에 포함된 것을 확인할 수 있습니다.
IAM Identity Center
이제 IAM Identity Center를 활성화해 보겠습니다.
-
IAM Identity Center를 검색하고 대시보드로 이동합니다. 활성화를 클릭하세요.
이 설정은 한 리전에 생성되며, 이후 변경할 수 없습니다. 하지만 어떤 리전을 선택하든 큰 차이는 없습니다. 나중에 다시 찾을 때 해당 리전으로 이동하기만 하면 됩니다.
-
활성화를 클릭하세요. 이렇게 하면 조직에 고유한 로그인 URL이 제공됩니다.
이 URL은 자동으로 생성되지만, 사용자 지정을 클릭해 고유한 이름을 선택할 수 있습니다. 나중에 사용할 수 있도록 이 URL을 북마크해 두는 것이 좋습니다.
루트 사용자
이제 IAM Identity Center에서 루트 사용자를 생성해 보겠습니다.
- 왼쪽에서 Users를 클릭한 후 Add user를 선택해 여러분의 사용자를 생성합니다. 사용자 이름은 회사 이메일(예:
dax@acme.com)로 설정하고 필수 항목을 입력합니다. - 그룹에 사용자를 추가하는 단계는 건너뜁니다.
- 사용자 생성을 완료합니다.
사용자를 생성했습니다. 이제 관리 계정에 접근 권한을 부여해 보겠습니다.
사용자 접근
왼쪽 패널에서 AWS Accounts를 클릭하세요.
- 관리 계정을 선택하세요. 관리 계정으로 태그가 지정되어 있을 것입니다. 그리고 Assign users or groups를 클릭하세요.
- Users 탭을 선택하고, 사용자가 선택되었는지 확인한 후 Next를 클릭하세요.
- 이제 새로운 권한 세트를 생성해야 합니다. 이 작업은 한 번만 수행하면 됩니다. Create permission set을 클릭하세요.
- 새 탭에서 Predefined permission set과 AdministratorAccess를 선택하세요. Next를 클릭하세요.
- 세션 지속 시간을 12시간으로 늘리세요. 이 옵션이 가장 편리합니다. Next를 클릭한 후 Create를 클릭하세요.
- 탭을 닫고 이전 탭으로 돌아가서 새로고침 아이콘을 클릭하세요. AdministratorAccess를 선택하고 Next를 클릭한 후 Submit을 클릭하세요.
이 과정이 복잡해 보일 수 있지만, 우리가 한 일은 사용자에게 관리 계정에 대한 _AdministratorAccess 역할_을 부여한 것입니다.
이제 사용자 계정에 로그인할 준비가 되었습니다.
로그인
이메일을 확인하면 초대장이 도착해 있을 겁니다.
-
초대를 수락하고 새 비밀번호를 생성하세요. 비밀번호 관리자에 저장하는 것을 잊지 마세요. 이 계정은 관리 계정에 접근할 수 있기 때문에 중요합니다.
-
로그인하면 조직과 그 아래 계정 목록이 보일 겁니다.
현재는 위에서 생성한 관리 계정에만 접근할 수 있습니다. 해당 계정을 클릭하면 AdministratorAccess 역할이 보일 겁니다.
-
Management Console을 클릭해 AWS 콘솔에 로그인하세요.
이제 루트 사용자 계정 설정이 완료되었습니다!
개발 및 프로덕션 계정
앞서 언급했듯이, 관리 계정은 리소스를 배포하기 위한 것이 아닙니다. 사용자를 관리하기 위한 목적으로 사용됩니다.
따라서 초기 설정으로 dev와 production 계정을 별도로 만드는 것이 좋습니다. 이렇게 하면 일부 격리를 만들 수 있습니다. dev 계정은 팀원들 간에 공유하고, production 계정은 프로덕션 전용으로 사용합니다.
스테이징 계정이나 개발자별 계정을 만들 수도 있지만, 우선은 간단하게 시작하겠습니다.
AWS Organizations로 돌아가려면 검색을 통해 이동합니다.
- AWS 계정 추가를 클릭합니다.
- 계정 이름에는 관리 계정 이름에
-dev를 추가합니다. 예를 들어,acme-dev와 같이 합니다. - 이메일 주소에는 새로운 이메일 별칭을 선택합니다. 만약 Gmail을 사용한다면,
aws+dev@acme.com과 같이 입력해도aws@acme.com으로 이메일이 전달됩니다. - AWS 계정 생성을 클릭합니다.
이 단계를 반복하여 -production 계정도 만듭니다. 이제 acme-dev와 acme-production 계정이 생겼을 것입니다.
계정 생성이 완료되기까지 몇 초가 소요됩니다.
사용자 할당
설정이 완료되면 IAM Identity Center로 이동하여 사용자에게 이 계정들에 대한 접근 권한을 부여합니다.
- 왼쪽의 AWS Accounts 탭을 선택합니다.
- 새로 생성한
acme-dev와acme-production계정을 선택하고 Assign users or groups를 클릭합니다. - Users 탭에서 사용자를 선택하고 Next를 클릭합니다.
- AdministratorAccess 권한 세트를 선택하고 Next와 Submit을 클릭합니다.
이제 SSO URL로 돌아가면 세 개의 다른 계정이 표시되며, 원하는 계정에 로그인할 수 있습니다.
위의 단계를 따라 추가 사용자를 생성하고 이 계정에 추가할 수 있습니다. 동일한 역할을 재사용하거나 더 엄격한 권한을 가진 역할을 생성할 수도 있습니다.
다음으로, 이 설정을 사용하도록 AWS CLI와 SST를 구성해 보겠습니다.
AWS CLI 설정하기
이 설정의 가장 큰 장점은 로컬 머신에서 AWS IAM 자격 증명을 생성할 필요 없이 SSO를 사용할 수 있다는 점입니다. 이 방법은 더 간단하고 안전합니다.
AWS CLI, SST 또는 실행하려는 스크립트를 위해 단일 설정 파일만 필요합니다. 그리고 장기간 유효한 자격 증명이 로컬 머신에 저장되지 않습니다.
-
~/.aws/config파일에 다음 블록을 추가합니다.~/.aws/config [sso-session acme]sso_start_url = https://acme.awsapps.com/startsso_region = us-east-1sso_start_url을 북마크한 SSO URL로 바꾸고, IAM Identity Center를 생성한 리전을sso_region으로 설정합니다. -
각 환경(예:
dev및production)에 대한 항목을 추가합니다.~/.aws/config [profile acme-dev]sso_session = acmesso_account_id = <account-id>sso_role_name = AdministratorAccessregion = us-east-1[profile acme-production]sso_session = acmesso_account_id = <account-id>sso_role_name = AdministratorAccessregion = us-east-1SSO 로그인 URL에서 계정 ID를 확인할 수 있습니다. 계정을 확장하면
#기호와 함께 표시됩니다.설정 파일에 지정된 리전은 CLI가 리전을 지정하지 않았을 때 사용할 기본 리전입니다.
역할 이름은 위에서 생성한 역할입니다. 다른 역할을 생성했다면 이 값을 변경해야 합니다.
-
이제 다음 명령어로 로그인할 수 있습니다.
Terminal window aws sso login --sso-session=acme이 명령어는 브라우저를 열고 접근 권한을 요청합니다. 세션은 이전에 설정한 대로 12시간 동안 유지됩니다.
WSL을 사용하는 윈도우 환경이라면, 호스트 머신의 로그인 브라우저를 열기 위한 스크립트를 추가할 수 있습니다.
스크립트 보기
login.sh #!/bin/bashif grep -q WSL /proc/version; thenexport BROWSER=wslviewfiaws sso login --sso-session=acme -
선택적으로, Node.js 프로젝트에서는
package.json스크립트에 이를 추가하여 팀원들이npm run sso로 로그인할 수 있도록 할 수 있습니다.package.json "scripts": {"sso": "aws sso login --sso-session=acme"} -
마지막으로, dev 계정을 대상으로 간단한 CLI 명령어를 실행하여 모든 것이 정상적으로 작동하는지 테스트합니다.
Terminal window aws sts get-caller-identity --profile=acme-dev
다음으로, SST가 이 프로파일을 사용하도록 설정해 보겠습니다.
SST 설정하기
sst.config.ts 파일에서 배포할 스테이지를 확인하고 적절한 프로필을 반환하세요.
export default $config({ app(input) { return { name: "my-sst-app", home: "aws", providers: { aws: { profile: input.stage === "production" ? "acme-production" : "acme-dev" } } }; }, async run() { // 리소스 정의 }});이 설정은 프로덕션 환경에서만 acme-production 프로필을 사용하고, 그 외에는 acme-dev 프로필을 사용합니다.
이전에 AWS_PROFILE 환경 변수나 .env 파일을 통해 AWS 자격 증명을 설정했다면, 이 설정이 sst.config.ts에 설정된 프로필을 덮어쓸 수 있습니다. 따라서 AWS_PROFILE에 대한 모든 참조를 제거해야 합니다.
이제 프로덕션 계정에 배포하려면 스테이지를 전달하기만 하면 됩니다.
sst deploy --stage production이제 모든 설정이 완료되었습니다!
요약하면, 우리가 만든 것은 다음과 같습니다:
- 조직 내 사용자를 관리할 관리 계정
- 관리 계정에 로그인할 수 있는 루트 사용자
- 앱을 위한 개발 및 프로덕션 계정
- 마지막으로, 루트 사용자에게 두 계정 모두에 대한 접근 권한 부여
이 설정을 확장하여 더 많은 사용자를 추가하거나, 추가 계정을 만들거나, 부여할 역할을 수정할 수 있습니다.