저는 Amplify Console에서 웹 호스팅을 하고 있고, 약 2년 동안 대체로 아주 만족하면서 사용하고 있습니다.
Amplify Console에서 웹 호스팅을 하는 방법은 아래 링크에서 볼 수 있습니다.
https://walkinpcm.tistory.com/11
그런데, 2년이나 사용하면서 간과하고 있던 것이 하나 있습니다.
그건 바로 '권한'입니다. 구체적으로는 Production Branch를 삭제하지 못하게 하는 권한입니다.
Amplify Console에서는 Git의 Branch 연결만으로 손 쉽게 배포환경이 만들어지고, Branch의 연결 해제만으로 손 쉽게 배포환경이 제거됩니다. 여기서 '손 쉽게 배포환경이 제거'되는 것은 큰 위험요인입니다.
사람은 언제든지 실수를 할 수 있기 때문에 언제든지 Production Branch를 삭제하여 Production 서비스를 없애버릴 수 있습니다.
당연하게도 Production Branch는 삭제할 수 없게 권한을 막아서 Production 서비스를 실수로 없애는 사고를 막아야합니다.
다행히 AWS IAM을 이용하면 특정 Amplify App의 특정 Branch의 삭제를 막는 정책을 적용할 수 있습니다.
아래에서 부터는 실험 상황을 만들어서 Branch 삭제를 막는 방법을 정리해보겠습니다.
아래 정책을 적용하면 특정 Branch의 삭제를 못하게 만들 수 있습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Deny",
"Action": "amplify:DeleteBranch",
"Resource": "arn:aws:amplify:{region}:{account-id}:apps/{app-id}/branches/{branch-name}"
}
]
}
위 정책에서 region, account-id, app-id, branch-name은 각자 알맞게 넣어주면 됩니다.
정책을 해석해보자면, 'Resource'에 명시한 [amplify app]의 [branch-name]에 대한 [amplify:DeleteBranch] 동작을 [Deny] 막는다는 의미입니다.
위의 정책을 사용자에게 적용하면 사용자가 Branch를 연결해제(삭제)하려고 할 때 아래와 같이 막히는 것을 볼 수 있습니다.
(참고로, IAM에서 사용자에게 정책을 적용시켰을 때 몇 초 정도는 적용되기까지 딜레이가 있습니다.)
Amplify Console의 Preview URL을 Custom Domain으로 사용하는 방법 (0) | 2022.10.25 |
---|---|
MSW를 이용해서 쉽고 깔끔하게 API Mocking 하자 (0) | 2022.05.11 |
MUI의 Datepicker에 사용하는 Input을 커스텀 해보자 (0) | 2022.01.12 |
emotion을 이용해서 MUI(Material-UI)의 Tooltip 컴포넌트에 커스텀 스타일 적용하는 방법 (1) | 2021.11.10 |
Error Handling(에러 핸들링) - (1) 고민 풀어보기 (0) | 2021.10.13 |
댓글 영역