IT

[AWS] 질문

공부가나연 2024. 4. 9. 14:13
  1. EC2 인스턴스가 S3 버킷을 참조할 때, GetObjectAcl/PutObjectAcl 권한이 있어야 하는 이유가 무엇일까요?
    1. ACL은 Access Control List로 액세스 제어 목록을 의미하는데
    2. GetObjectACL: 객체 ACL 가져오기., 이권한은 객체에 대한 ACL 정보를 가져오는데 사용된다.
      EC2 인스턴스가 S3 버킷에 저장된 객체의 ACL을 가져와서 해당 객체에 대한 액세스 권한을 확인할 수 있다. 이를 통해 인스턴스가 특정 객체에 대한 읽기 권한이 있는지 확인할 수 있다.
    3. PutObjectAcl: 객체 ACL 설정. 객체의 ACL을 설정하는데 사용된다.
      EC2 인스턴스가 S3 버킷에 새로운 객체를 업로드하거나 기존 객체의 ACL을 변경행야할 경우 해당 권한이 필요하다. 이를 통해 인스턴스는 객체에 대한 새로운 액세스 권한을 부여하거나 변경할 수 있다.
    4. 이러한 권한은 보안 및 액세스 제어를 강화하고 S3버킷의 객체에 대한 정확한 권한을 관리하기 위해 필요하다. EC2 인스턴스가 S3 버킷에 접근하여 객체를 읽거나 쓸 때 이러한 액세스 제어가 중요하다.
  2. EC2 인스턴스가 S3 버킷을 참조할 때, S3 버킷 내의 Object 목록을 얻을 수 있는 권한이 있어야 하지 않을까요?
    1. ListBucket: S3 버킷 내의 객체 목록을 얻을 수 있도록 한다.
      EC2 인스턴스가 해당 버킷의 객체 목록을 가져와서 필요한 객체를 식별 할 수 있게한다.
  3. Assume Role을 사용하는 이유는 무엇이고, 어떻게 동작할까요?
    1. 보안 및 권한 관리를 개선하고 다양한 AWS 리소스 간에 안전하게 액세스를 제어하기 위해 사용된다.
    2. 사용 이유
      1. Cross-Account Access(계정간 액세스): 한 AWS 계정의 리소스에 다른 AWS 계정의 역할을 사용하여 안전하게 액세스 할 수 있다.
      2. Federated Users(패더레이션 사용자): 외부 신원 공급자를 통해 AWS 리소스에 대한 임시 액세스를 제공할 수 있다.
      3. Least Privilege(최소권한): 리소스에 대한 필요한 최소한의 권한을 부여하여 보안을 강화할 수 있다.
    3. 동작 방식
      1. AWS STS(Security Token Service)를 사용하여 일시적인 자격 증명을 생성한다.
      2. 생성된 일시적인 자격 증명으로 Assume Role을 호출한다.
      3. Assume Role이 호출되면, 해당하는 AWS 리소스에 대한 액세스 권한을 부여받게 된다.
    4. STS와 Assume role을 함께 사용하는 이유
      1. STS를 사용하여 일시적인 자격 증명을 생성한다., Assume role을 호출하고 생성된 일시적인 자격 증명을 사용하여 IAM 사용자나 외부 자격 증명으로 다른 AWS 계정 또는 리소스에 액세스한다.
  4. IAM Policy에 있는 S3 버킷을 !Sub 명령으로 바꿀 수 있는 방법은 없을까요?
    1. !Sub 함수를 사용하여 동적으로 지정할 수 있다.
    2. Resource: !Sub "arn:aws:s3:::${BucketName}/*” 이처럼 실제 S3 버킷 리소스의 ARN을 생성하여 특정 권한들을 부여할 수 있다.
  5. 인스턴스 프로파일은 어떤 것이고, 왜 필요할까요?
    1. IAM이 사람을 구분하고 그 사람에게 권한을 주기위한 개념이라면 인스턴스 프로파일은 EC2 인스턴스를 구분하고 그 인스턴스에 권한을 주기 위한 개념이다. 인스턴스 프로파일은 역할을 위한 컨테이너로서 인스턴스 시작 시 EC2 인스턴스에 역할 정보를 전달하는데 사용한다.
    2. 인스턴스 프로파일은 EC2 인스턴스에 IAM 역할을 할당하여 해당 인스턴스가 AWS 서비스와 상호작용할 수 있는 권한을 부여한다. (보안 및 액세스 제어, AWS 리소스와의 상호 작용, 권한의 관리 및 중앙 집중화)
  6. EC2가 참조하는 보안그룹도 CloudFormation에서 생성해 보는 건 어떨까요?
  7. Resources: MySecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: My security group description SecurityGroupIngress: - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: 0.0.0.0/0 # Allow SSH access from anywhere - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 # Allow HTTP access from anywhere MyEC2Instance: Type: AWS::EC2::Instance Properties: InstanceType: t2.micro ImageId: ami-1234567890abcdef0 SecurityGroupIds: - !Ref MySecurityGroup # Reference the security group defined above --- 이처럼 sg를 생성할 수도 있고 이미 생성된것을 부여 할 수도 있다.
  8. 'cat << EOF >> .jupyter/jupyter_notebook_config.py' 명령이 의미하는 것은 뭘까요? (힌트: linux shell redirection)
    1. cat 명령은 파일의 내용을 출력
    2. << 은 리다이렉션 구문 중 하나로 여러 줄의 입력을 받을 수 있다.
    3. EOF는 End Of File로 사용자가 입력을 끝내고자 할 때 사용하는 마커이다.
    4. .jupyter/jupyter_notebook_config.py는 출력을 파일로 라다이렉션 하는 부분이다.
      → 전체적으로 사용자로부터 여러줄의 입력을 받아서 해당 conifg.py 파일에 추가하는 것으로 설정 파일을 만들거나 수정할 때 사용한다.
      → 직접 입력한 텍스트를 파일에 저장할 때 사용, 처음에 cat << EOF > 파일명을 사용하여 시작하고 마지막에 EOF 단어로 파일 끝을 내고 저장함

  9. YAML 파일에서 주석 처리한 부분은 왜 주석 처리했는지 설명 부탁드립니다.
  10. **README.md 파일을 작성해 달라고 한 이유는 부재 중에 문제 발생 시 누군가가 대신 대응할 수 있는 절차를 설명하기 위함입니다. 꼭 작성하기 바랍니다.**