23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
1편에 이어서 2편은 IAM 나머지 설정(임시 자격 증명)과 S3 버킷 설정을 진행해 보겠습니다.
1편은 아래를 참고해 주세요.
AWS MediaConvert 를 활용한 동영상 스트리밍 서비스 구축기 - 1편
장기 자격 증명과는 반대되는 개념.
먼저 장기 자격 증명은 보통 app 등에서 aws 리소스 접근시 aws 유저의 acesskey, secretkey를 입력해서 접근하게 되는데 이 acesskey, secretkey 가 유출(github등) 되면 제한없이 aws 리소스 접근이 되기 때문에 보안에 취약하다.
임시 자격 증명은 단기로 사용할 수 있는 자격 증명이다.
몇분에서 몇시간 까지 지속시간이 정해져 있어서 '임시' 라는 말이 들어간다. 자격 증명이 만료된 이후에는 어떤 종류의 액세스도 허용되지 않는다.
장기 자격 증명 보다는 다소 번거로운 작업들이 있지만 대신 보안에 뛰어나다.
IAM User(깡통)가 특정 Role의 모자를 써서 마치 권한이 있는 User처럼 되는걸 AssumeRole 이라고 한다.
클라이언트(app등)에서 프로그래밍 방식으로 접근할때도 위 Flow대로 개발하여 접근해야 한다.
IAM User
AWS에 접근이 가능하지만, 아무런 권한이 없는 깡통 유저
STS
IAM User가 역할로부터 임시 토큰을 얻기 위한 시스템.
Role
특정 AWS 리소스 권한을 가지고 있는 역할(S3 라던지 Lambda 등등)
User 생성
아무권한 없는 aws 유저를 먼저 생성한다.(아무것도 설정 안하고 계속 다음 다음... )
사용자 생성후에 액세스키를 만든다(클라이언트에서 접속하기 위한)
"액세스 키 만들기" 클릭하여 생성 → accesskey / secretkey를 잘 보관하여 사용하는 클라이언트에게 전달
권한 추가
만든 유저 클릭 → 권한 추가 → 인라인 정책 생성
서비스 선택 → STS 선택
쓰기 → "AssumeRole" 선택
리소스 → "모두" 선택
정책 이름 입력후 생성
Role 생성
IAM → 역할 → 역할 생성
신뢰할 수 있는 엔티티 유형 → AWS 계정 → 이 계정 선택
AmazonS3FullAccess 선택
역할 이름 입력후 생성
ARN 확인(ARN 정보를 클라이언트에게 전달해야 한다)
임시권한 획득을 위해 클라이언트에게 제공할 데이터
IAM User(권한 없는 깡통유저)의 accessKey / secretKey.
역할(Role)의 ARN 정보
Region
버킷 이름은 {환경}-ifland-s3-mediaconvert 로 생성
폴더 생성
버킷 생성후 input 폴더와 output 폴더 생성
폴더명 | 설명 |
|---|---|
input | 원본 동영상이 업로드 되는 폴더, 업로드 되면 mediaConvert에서 자동으로 HLS 변환이 이루어 진다. |
output | input 폴더에 있는 동영상이 HLS 로 변환뒤에 업로드 되는 폴더 |
퍼블릭 액세스 차단 설정
권한 → 퍼블릭 엑세스 차단 → 편집
아래 3개 차단 정책 체크
임의의 ACL(액세스 제어 목록)을 통해 부여된 버킷 및 객체에 대한 퍼블릭 액세스 차단
새 퍼블릭 버킷 또는 액세스 지점 정책을 통해 부여된 버킷 및 객체에 대한 퍼블릭 액세스 차단
임의의 퍼블릭 버킷 또는 액세스 지점 정책을 통해 부여된 버킷 및 객체에 대한 퍼블릭 및 교차 계정 액세스 차단
"새 ACL(액세스 제어 목록)을 통해 부여된 버킷 및 객체에 대한 퍼블릭 액세스 차단" 까지 체크시, mediaConvert에서 S3 접근시 Access denied 오류가 발생.
버킷 정책
권한 → 버킷정책
버킷 정책에 Cloud Front 생성시 같이 생성한 OAC 정책을 복붙해줌.
(Cloud Front 생성 방법은 다음편에 연재 예정입니다!!)
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "AllowCloudFrontServicePrincipal",
"Effect": "Allow",
"Principal": {
"Service": "cloudfront.amazonaws.com"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::sandbox-ifland-mediaconvert-s3/*",
"Condition": {
"StringEquals": {
"AWS:SourceArn": "arn:aws:cloudfront::xxxxxxxxx:distribution/xxxxxxx"
}
}
}
]
}객체 소유권
권한 → 객체소유권 편집
"ACL 활성화됨", "버킷 소유자 선호" 체크 후 저장
위 설정을 하지 않으면 mediaConvert에서 S3 접근시 ACL 오류 발생.
CORS 설정
권한(Permissions) 탭을 선택.
CORS(Cross-Origin 리소스 공유) 섹션에서 편집을 선택.
CORS 구성 텍스트 상자에서 아래 CORS 구성을 복사하여 붙여 넣는다.
[
{
"AllowedOrigins": [
"*"
],
"AllowedMethods": [
"GET"
],
"AllowedHeaders": [
"*"
],
"ExposeHeaders": []
}
] 바쁘다는 핑계로 2편이 좀 늦어졌네요.
다음 연재는 더 빠르게 할수 있도록 노력하겠습니다!!!
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.