Category: 보안 뉴스 및 문서


[기술 백서] AWS WAF를 통해 OWASP 상위 10 웹 애플리케이션 취약점 방어하기

Open Web Application Security Project (OWASP)의 웹 애플리케이션 보안 향상 프로젝트를 알고 계시나요? 그 중에서도 OWASP Top 10이라는 가장 중요한 10 가지 애플리케이션 보안 결함 목록이 있습니다. 이 목록은 최근 웹 사이트 및 웹 애플리케이션에서 자주 발견되는 일반적인 취약점에 대한 내용을 포함합니다.

AWS WAF는  이전 블로그 글에서 설명 드린 대로  SQL 인젝션 및 크로스 사이트 스크립팅과 같은 애플리케이션 계층 공격으로부터  사용자 지정 규칙을 만들어 허용 및 거부 트래픽 유형을 정의함으로서 보안을 강화할 수 있습니다.

신규 기술 백서 Use AWS WAF to Mitigate OWASP’s Top 10 Web Application Vulnerabilities 에서는 OWASP의 상위 열 가지 취약점을 완화하기 위한  AWS WAF 사용 방법을 설명합니다. 즉, OWASP Top 10 (공식적으로 A1에서 A10으로 알려짐)에서 가장 중요한 항목에 대한 세부적이고 구체적인 완화 전략 및 구현 세부 정보가 포함됩니다.

지금 다운로드 하세요!
한국어 기술 백서(영문)는 각 취약점에 대한 배경 및 배경을 제공하고 WAF 규칙을 작성하고 차단하는 방법을 보여줍니다. 또한 HTTP 요청에 제공된 매개 변수를 미리 검증하기 위해 Lambda @ Edge를 사용하는 아주 멋진 제안을 포함하여 심층 방어 권고를 제공합니다.

이 백서에서는 권장 조건 유형 및 규칙과 함께 웹 ACL을 만드는 동반자 AWS CloudFormation 템플릿에 연결됩니다. 이 템플릿을 자신의 작업을위한 시작점으로 사용하여 더 많은 조건 유형과 규칙을 원하는대로 추가 할 수 있습니다.

AWSTemplateFormatVersion: '2010-09-09'
Description: AWS WAF Basic OWASP Example Rule Set

## ::PARAMETERS::
## Template parameters to be configured by user
Parameters:
  stackPrefix:
    Type: String
    Description: The prefix to use when naming resources in this stack. Normally we would use the stack name, but since this template can be us\
ed as a resource in other stacks we want to keep the naming consistent. No symbols allowed.
    ConstraintDescription: Alphanumeric characters only, maximum 10 characters
    AllowedPattern: ^[a-zA-z0-9]+$
    MaxLength: 10
    Default: generic
  stackScope:
    Type: String
    Description: You can deploy this stack at a regional level, for regional WAF targets like Application Load Balancers, or for global targets\
, such as Amazon CloudFront distributions.
    AllowedValues:
      - Global
      - Regional
    Default: Regional
...

Jeff;

이 글은 Prepare for the OWASP Top 10 Web Application Vulnerabilities Using AWS WAF and Our New White Paper 의 한국어 번역입니다.

AWS 9월 온라인 세미나 – 클라우드 보안 특집

AWS 한국팀에서도 AWS 클라우드를 아껴주시는 한국 고객 분들을 위해 지속적으로 “AWS 월간 웨비나 시리즈”를 진행하고 있습니다.

aws-security-webinar-2016-09

이번 9월 웨비나에서는 AWS의 보안 전문 파트너사들과 함께 클라우드 도입과 활용 과정에서 고려해야 할 다양한 보안 관련 요소들을 소개해 드리고자 합니다.

기존 온프레미스 환경에서의 보안 절차를 클라우드에서 구현하는 방법, AWS의 다양한 보안 관련 기능 및 서비스를 활용해 보안을 강화할 수 있는 모범사례, AWS 클라우드 기반의 아키텍처 보안을 더 강화하기 위한 파트너사 솔루션의 소개 등 다양한 내용으로 준비되어 있습니다.

기초 | AWS와 함께하는 클라우드 컴퓨팅
연사: 박은애 어카운트 매니저
일시: 2016년 9월 27일 (화) 오전 10:00 – 오전 11:30

강연 요약: AWS 클라우드는 IT의 새로운 기준을 정립하며 클라우드 컴퓨팅 산업을 혁신하고 있습니다. 이 세미나에서는 클라우드 컴퓨팅의 개념과 AWS가 제공하는 서비스 및 솔루션의 특장점, 주요 사용사례에 대해 말씀드리고 질답 시간을 가질 예정입니다. 부디 참석하셔서 귀사의 사업과 서비스에 적용할 수 있는 정보를 얻어가시기 바랍니다.

기초 | AWS 클라우드 보안의 이해
연사: 양승도 솔루션즈 아키텍트
일시: 2016년 9월 27일 (화) 오후 02:00 – 오후 03:30

강연 요약: AWS 클라우드를 사용하는 고객들의 데이터와 애플리케이션을 보호하기 위해 다양한 종류의 기능과 서비스를 제공하고 있으며, 강력한 보안 체계를 구축할 수 있도록 이런 기능과 서비스들을 도입하고 고객의 상황에 맞는 모범사례에 따라 인프라를 구축할 것을 권하고 있습니다. 이 강연에서는 AWS가 제시하는 보안 모델의 기초적 개념을 소개하고 다양한 보안 관련 기능 및 서비스의 활용법을 안내해 클라우드 위에서 확장성과 안전성을 두루 갖춘 아키텍처를 구축할 수 있는 방법을 알려 드리도록 하겠습니다.

기초 | AWS에서의 네트워크 보안(DDoS, UTM 및 WAF)
연사: 이경수 솔루션즈 아키텍트
일시: 2016년 9월 28일(수) 오전 10:00 – 오전 11:30

강연 요약: AWS 클라우드가 제공하는 보안 관련 서비스는 애플리케이션 레벨, 네트워크 레벨 등 다양한 레이어와 범위에 걸쳐 있습니다. 이 강연에서는 네트워크 레벨에서 허가되지 않은 접근과 DDoS 등 보안상의 위협을 막기 위해 취해야 할 모범사례들에 대해 소개하고 이를 구현하기 위해 네트워크 보안 구성 요소인 UTM과 WAF를 구성하는 방법에 대해 알아보도록 하겠습니다.

중급 | Deep Security를 통한 AWS에서의 보안 적용
연사: 양희선 차장, 트렌드마이크로
일시: 2016년 9월 28일(수) 오후 02:00 – 오후 03:30

강연 요약: 기업이 클라우드를 본격적으로 활용하기 위해 필요한 요소 중 하나는 기존 온프레미스 환경의 보안 체계를 클라우드에서도 활용할 수 있도록 설정하는 것입니다. 이 강연에서는 트렌드마이크로 Deep Security를 통해 기존의 물리적 환경에 구현되어 있던 보안 체계를 AWS 클라우드 상에 동일하게 구현하는 방법에 대해 말씀드리도록 하겠습니다.

중급 | AWS에서의 웹방화벽(WAPPLES)과 암호플랫폼(D’Amo) 적용
연사: 남경문 부장, 펜타시큐리티
일시: 2016년 9월 29일 (목) 오전 10:00 – 오전 11:30

강연 요약: 펜타시큐리티에서는 클라우드를 사용하는 기업들이 웹 어플리케이션과 최종 사용자들의 개인정보를 보호할 수 있도록 위하여 웹방화벽(WAPPLES)과 암호플랫폼(D’Amo)을 클라우드 환경에 맞추어 제공하고 있습니다. 이 강연에서는 클라우드 환경에서 왜 웹방화벽과 암호플랫폼을 사용해야 하는지 말씀드리고 AWS 클라우드에서 활용할 수 있는 펜타시큐리티의 보안 아키텍쳐와 이를 구현하는 방법에 대해서 소개하겠습니다.

중급 | AWS 클라우드 환경에서의 사전 방어(Prevention)
연사: 김민석 수석부장, 팔로알토 네트웍스
일시: 2016년 9월 29일 (목) 오후 02:00 – 오후 03:30

강연 요약: 팔로알토 네트웍스는 클라우드 환경을 위한 East West 트래픽 보안 통제 시스템을 통해 애플케이션에 대한 철저한 검증 및 클라우드 사용 권한 설정을 보안 관점에 촛점을 맞춰 원치 않은 이용자들의 접근을 제한해 드립니다. 이 강연에서는 클라우드 IT 환경에서의 다양한 보안 이슈 분석을 통해 위협에 사전 방어(Prevention)할 수 있는 구체적이면서도 효율적인 방안을 제시하고자 합니다.

클라우드 보안 특집 웨비나를 통해 클라우드 도입에 대한 다양한 정보를 얻으시길 바라며, 본 온라인 세미나에 대한 자세한 발표 내용 및 연사 소개는 월간 웨비나 홈페이지를 참고하시기 바랍니다.

– AWS 코리아 마케팅팀;

암호화 된 EBS Snapshot의 계정간 복사 기능 제공

AWS는 Amazon Elastic Block Store (EBS) 볼륨과 스냅샷 암호화를 지원하고 AWS Key Management Service (KMS)에 의해 암호화 키 보관 및 관리가 가능합니다. 또한, 다른 AWS 계정에 EBS 스냅샷 복사를 지원하고, 스냅샷에서 새 볼륨을 생성 할 수 있습니다. 이어서 오늘은 암호화 된 EBS 스냅샷을 AWS 리전간에 이동할 수있는 유연성과 함께 계정간에 복사하는 기능이 추가되었습니다.

이러한 신규 기능은 아래 세 가지의 고객의 주요 베스트 프랙티스를 진행할 수 있습니다.

  1. 정기적으로 EBS 볼륨의 백업하기
  2. 운영 환경(dev, test, staging, and prod)마다 다중 AWS 계정 사용 가능
  3. 백업을 포함한 데이터 (보관 데이터) 암호화 수행

암호화 된 EBS 볼륨과 스냅샷
실제 이 기능을 직접 진행해 보겠습니다. 먼저 IAM 콘솔을 사용하여 암호화 키를 만듭니다.

암호화 키를 지정하여, 암호화 된 EBS 볼륨을 만듭니다. (다른 계정에 복사 할 경우, 사용자 지정 키를 이용해야합니다)

이제 암호화 된 EBS 볼륨을 만들 수 있습니다.

위에서 보시다시피, 이미 긴 볼륨 ID와 스냅샷 ID를 내 AWS 계정에서 사용하고 있습니다 (자세한 정보는 They’re Here – Longer EBS and Storage Gateway Resource IDs Now Available을 참고하십시오.)

계정간 복사
지금 부터 새로운 기능에 대해 소개해드리겠습니다. 다른 계정에 암호화 된 EBS 스냅 샷 복사본을 만들려면, 네 가지 간단한 단계를 수행해야합니다 :

  • 스냅 샷에 연결된 사용자 지정 키를 다른 계정과 공유하기
  • 암호화 된 EBS 스냅 샷을 상대방 계정과 공유하기
  • 공유 할 계정에서 스냅 샷 복사본을 만들기
  • 새 볼륨을 생성하기 위해 작성한 복사본 이용하기

    위의 처음 두 단계를 수행하려면 공유할 계정 번호가 필요합니다. IAM 콘솔을 통해 공유할 계정에 사용자 지정 키 공유 여부를 확인합니다.

    암호화 된 EBS 스냅 샷을 공유합니다. 공유 스냅 샷을 선택하고 Modify Permissions을 클릭합니다.

    공유 대상 계정 번호를 입력하고 Save를 클릭합니다.

    암호화 된 스냅 샷을 공개 할 수 없음을 유의하시기 바랍니다.

    다음 단계로 넘어 가기 전에 권한에 대해 확인해 주시기 바랍니다. 아래에 필요한 권한 정책 및 역할을 설정하기 위해 주의할 사항을 알려드립니다.

    Source Account (스냅 샷 공유 원래 계정) – 공유 원래 계정의 IAM 사용자 역할은 ModifySnapshotAttribute 함수를 호출 할 수 있어야하며, 원래의 스냅 샷과 연관된 키에 대해 DescribeKeyReEncypt 작업을 수행할 수 있어야 합니다.

    Target Account (스냅 샷 공유 계정) – 공유 할 계정의 IAM 사용자 역할은 원래 스냅 샷과 연관된 키에 대해 DescribeKey, CreateGrantDecrypt 작업을 수행 할 수 있어야합니다. 또한, CopySnapshot 호출 할 때, 관련된 키에 대해 CreateGrant, Encrypt, Decrypt, DescribeKeyGenerateDataKeyWithoutPlaintext를 수행할 수 있어야 합니다.

    이제 관리 콘솔에서 공유할 계정으로 전환하면, Snapshots탭에서 Private Snapshots을 클릭합니다. 스냅샷 ID (스냅 샷 이름은 태그로 저장되지만 복사되지 않음)를 통해 공유 된 스냅 샷을 확인한 후, 체크 박스에서 선택하고 Action에서 Copy를 선택합니다.

    복사 된 스냅 샷에 사용되는 암호화 키를 선택합니다.(여기에서는 아시아 태평양 (도쿄) 리전에 스냅 샷을 복사합니다).

    복사 할 때, 새 키를 이용하여 두 계정 추가적인 분리 수준이 높아집니다. 복사 작업 중에 새 키를 사용하여 데이터를 다시 암호화됩니다.

    정식 출시
    이 기능은 AWS Key Management Service (KMS)가 사용 가능한 모든 리전에서 사용할 수 있습니다. 데이터 볼륨 루트 볼륨에서 사용할 수 있도록 설계되어 모든 볼륨 유형에서 사용할 수 있지만, 현시점에서는 암호화 된 AMI를 공유하기 위해 사용하는 것은 불가능합니다. 스냅 샷을 복사하여 새 이미지로 등록하여 스냅 샷을 이용하여 암호화 된 부팅 볼륨을 만들 수 있습니다.

    Jeff

    이 글은 New – Cross-Account Copying of Encrypted EBS Snapshots의 한국어 번역입니다.

신규 AWS Encryption SDK로 빠르게 데이터 암호화 구현하기

AWS 암호화 개발팀은 AWS Encryption SDK를 발표하게 되어 기쁘게 생각합니다. 이 새로운 암호화 SDK는 응용 프로그램의 보안을 해칠수 있는 오류를 최소화하면서 개발자들이 쉽게 암호화를 적용할 수 있게 해줍니다.

새로운 SDK 사용을 위해 반드시 AWS 고객이 되실 필요는 없지만, 이번 포스팅에서는 AWS 고객들이 즉시 사용 가능한 예제들을 포함하고 있습니다.

암호화를 적용하는 개발자들은 항상 두 가지 문제를 신경써야 합니다:

  1. 데이터를 암호화 하는데, 어떻게 정확하게 키를 생성하고 사용할 것인가.
  2. 사용 후, 키를 안전하게 보호하는 방법

새로운 AWS 암호화 SDK에서 제공하는 라이브러리는 각종 개발 환경에서 사용될 수 있는 암호화 공급자를 채택하여 상세한 세부 사항을 구현함으로써 첫 번째 문제를 해결합니다. 또한, 이 라이브러리는 고객이 고객의 키를 보호하는 방법을 선택할 수 있도록 직관적인 인터페이스를 제공하여 두 번째 문제를 해결하는 데 도움을 줍니다.

따라서 개발자는 암호의 복잡성을 신경쓰는 대신에, 그들이 구축하는 응용 프로그램의 코어에 집중할 수 있습니다. 이 블로그 게시물에서는 AWS 암호화 SDK를 사용하여, 하나의 리젼이나 특정 키 관리 솔루션에 얽매이지 않고, 어플리케이션 가용성을 개선하는 데 도움이 되는 방법으로 키를 보호하고, 데이터 암호화 프로세스를 어떻게 단순화할 수 있는지를 보여줍니다.

Envelope 암호화 및 신규 SDK

AWS 암호화 SDK를 사용할 때 이해해야 하는 중요한 개념은 Envelope 암호화(하이브리드 암호화라고도 함)입니다. 암호화 알고리즘 마다 상이한 보안 수준을 가지고 있고, 모든 사용 사례에 맞는 단일 알고리즘은 없습니다.

예를 들어, (예 : RSA 또는 AWS 키 관리 서비스 [KMS]과 같은) 보안성이 높은 키 관리 특성을 가진 방식은 종종 많은 양의 데이터를 처리해야 하는 경우와 잘 맞지 않습니다. Envelope 암호화는 빠른 암,복호화에 적합한 일회용 데이터 키(예 : AES-GCM 같은)를 가지고 대용량 데이터를 암호하하는 방식으로 이 문제를 해결합니다. 그런 다음 해당 데이터 키를 마스터 키로 다시 암호화하게 되고, 마스터 키는 별도로 적절한 알고리즘이나 전담 키 관리 솔루션을 사용하여 보호하게 됩니다.

Envelope 암호화의 또 다른 장점은 다수의 수신자들이 하나의 암호화된 메시지를 복호화할 수 있다는 것입니다. 모든 수신인이 키를 공유하거나(일반적으로 안전하지 않은 경우가 많음) 또는  동일 메시지를 여러 번 암호화하는(비실용적 임) 방식과 비교하여, 단지 데이터 키를 각 수신인의 마스터키로 암호화하여 공유하기만 하면 됩니다. 이 방식은 복수의 키로 여러번 중복적인 작업을 하는 것에 비하여 작업량도 줄여주고 훨씬 더 실용적입니다.

Envelope 암호화의 단점은 상대적으로 구현이 복잡하다는 것 입니다. 모든 클라이언트가 특정 형태의 데이터 포맷을 만들고 해석할 수 있어야 하며, 멀티플 키와 알고리즘을 다룰 수 있고, 과거버전 및 향후 버전과의 호환성을 유지할 수 있어야 합니다.

AWS Encryption SDK가 어떤 도움을 줄 수 있나요?

AWS 암호화 SDK는 (미래의 확장이 가능한 형태로) 여러 보안 알고리즘 조합을 지원할 수 있고, 마스터 키의 종류나 알고리즘에 아무런 제한이 없도록, 데이터 포맷을 신중하게 설계  및  검토하였습니다.  AWS 암호화 SDK 자체는 AWS CloudHSM 및 기타 PKCS # 11 디바이스에 대한 지원을 포함하여, KMS와 Java 암호화 아키텍쳐(JCA / JCE)를 직접 지원해야 하는 운영환경에서 충분히 사용 가능하도록 자바로 구현되었습니다. 다른 언어를 위한 SDK는 현재 개발되고있습니다.

AWS 암호화 SDK의 이점 중 하나는 사용자는 데이터의 안전한 이동만 신경쓰면 되도록 상세한 수준의 암호화 세부 사항은 이미 구현되어 있다는 것입니다.  아래 보기를 통해, 여러분이 단 몇줄의 코딩으로 멀티 리전 상에서 강력하고 안전한 솔루션을 확보 할 수 있는지를 확인하 실 수 있습니다.

샘플 사례 1: 높은 가용성 유지를 위해 복수개의 리전 별 마스터 키를 통해 어플리케이션을 안전하게 암호화하는 방법

많은 고객들이 복수개의 가용영역 뿐만 아니라 멀티 리전 상에서도 구축을 하려고 합니다. 하지만 이런 구성을 하려고 할때마다 고객 마스터 키가 리전간에 공유될 수 없는 상황 때문에 어려움에 직면하게 됩니다. Envelop 암호화 방식을 이용하면, 서로 다른 리전간에 복수개의 고객 마스터 키를 가지고 데이터 키를 암호화 함으로써 이런 문제를 해결할 수 있습니다. 그리고 각 리전에서 운영되고 있는 어플리케이션들은 보다 빠르고 신뢰할수 있는 방식으로 암복호화를 수행할 수 있도록 로컬 KMS쪽에 접근하면 됩니다.

본 포스팅에서 이후 나오는 모든 사례를 위해, EC2상에 IAM roles을 부여했습니다. 이로 인해, 크레덴셜 관리에 대한 부담을 덜고, 가장 가까운 엔드포인트로 요청을 보낼수 있는 잇점을 누릴 수 있습니다. 본 예제에서는 또한 AWS SDK for Java (AWS Encryption SDK와는 다른) 와 Bouncy Castle 이 구성되어 있다고 가정하겠습니다.

아래 암호화 로직은 전체적인 이해를 돕기 위한 매우 간단한 상위 레벨의 디자인 입니다. 커맨드 라인으로 부터 몇가지 파라메터들을 받아들이고, 마스터 키를 가져와서 파일을 암호화하는데 사용합니다(샘플 코드에 보여지는 대로). 본 포스팅의 다른 부분에 메써드에 대한 상세한 내용이 나옵니다.

public static void main(final String[] args) throws Exception {
// Get parameters from the command line
final String inputFile = args[0];
final String outputFile = args[1];

// Get all the master keys we'll use
final MasterKeyProvider<?> provider = getMasterKeyProvider();

// Actually encrypt the data
encryptFile(provider, inputFile, outputFile);
}

마스터 키들을 만들고 단일 마스터 키 제공자로 묶기

다음 코드 예제는 3개의 리젼(us-east-1, us-west-1, and us-west-2)에서 고객 마스터키들을 가지고 데이터를 암호화하는 방법을 보여줍니다. 본 예제에서는 고객 마스터키들을 이미 만들어서 가지고 있다고 가정하고, 각 고객 마스터키 별로 각각의 리전에 alias/exampleKey 라는 Alias를 생성했다고 가정하겠습니다. 고객 마스터키나 Alias생성에 대한 부분은 AWS KMS의  Creating Keys 를 참고하시기 바랍니다.

본 예제에서 보면 모든 마스터키들을 통합 하는 단일 마스터키 제공자로 MultipleProviderFactory를 활용하고 있는 것을 볼수 있습니다. 코드상에서 보면 첫번째 마스터 키로 신규 데이터 키를 생성하는데 사용했고, 다른 마스터키를 통해 새로운 데이터 키를 암호화하는데 사용하는 것을 살펴보실 수 있습니다.

private static MasterKeyProvider<?> getMasterKeyProvider() {
// Get credentials from Roles for EC2
final AWSCredentialsProvider creds =
new InstanceProfileCredentialsProvider();

// Get KmsMasterKeys for the regions we care about
final String aliasName = "alias/exampleKey";
final KmsMasterKey useast1 = KmsMasterKey.getInstance(creds, "arn:aws:kms:us-east-1:" + ACCOUNT_ID + ":" + aliasName);
final KmsMasterKey uswest1 = KmsMasterKey.getInstance(creds, "arn:aws:kms:us-west-1:" + ACCOUNT_ID + ":" + aliasName);
final KmsMasterKey uswest2 = KmsMasterKey.getInstance(creds, "arn:aws:kms:us-west-2:" + ACCOUNT_ID + ":" + aliasName);

return MultipleProviderFactory.buildMultiProvider(useast1, uswest1, uswest2);
}

이와 같은 MasterKeyProvider를 생성하는 로직을 활용하여 필요한 마스터 키들을 미리 만들어 놓고 전사적으로 재활용하는 방식을 통해 보안팀 주도의 중앙 관리 형태를 쉽게 구축할 수 있으며, 더 나아가 개발과정의 암호화 관련 작업들을 전사적으로 표준화, 단순화 할 수 있으며, 회사 정책기준으로 개발 과정의 암호화 프로세스를 통제할 수 있게 됩니다.

데이터 암호화

여러분들이 암호화해야 될 데이터가 여러 군데에 존재할 수 있습니다. 다음 예제에서는 디스크로 부터 파일을 읽어 들여서 암호화된 복제본을 생성하는 과정입니다. 아래 예제에서 처럼 AWS Encryption SDK 는 Java streams 와 쉽게 연동됩니다.

private static void encryptFile(final MasterKeyProvider<?> provider,
final String inputFile, final String outputFile) throws IOException {
// Get an instance of the encryption logic
final AwsCrypto crypto = new AwsCrypto();

// Open the files for reading and writing
try (
final FileInputStream in = new FileInputStream(inputFile);
final FileOutputStream out = new FileOutputStream(outputFile);

// Wrap the output stream in encryption logic
// It is important that this is closed because it adds footers
final CryptoOutputStream<?> encryptingStream =
crypto.createEncryptingStream(provider, out)) {

// Copy the data over
IOUtils.copy(in, encryptingStream);
   }
}

해당 파일은 암호화 작업을 위한 여러가지 구성정보 들을 담고 있으며, 이 정보를 EC2인스턴의 EC2 user data 로서 인스턴스 시작과정에서 사용하게 됩니다.

데이터 복호화

다음 예제는 EC2 user data의 내용을 복호화하고 그 내용을 지정된 파일에 기록하는 것입니다. AWS SDK for Java 는 디폴트 설정으로 로컬 리전의 KMS 를 사용하도록 되어 있고, 따라서 리전 밖으로의 요청 과정 없이 빠르게 복호화를 진행하게 됩니다.

public static void main(String[] args) throws Exception {
// Get parameters from the command line
final String outputFile = args[0];

// Create a master key provider that points to the local
// KMS stack and uses Roles for EC2 to get credentials.
final KmsMasterKeyProvider provider = new KmsMasterKeyProvider(
new InstanceProfileCredentialsProvider());

// Get an instance of the encryption logic
final AwsCrypto crypto = new AwsCrypto();

// Open a stream to read the user data
// and a stream to write out the decrypted file
final URL userDataUrl = new URL("http://169.254.169.254/latest/user-data");
try (
final InputStream in = userDataUrl.openStream();
final FileOutputStream out = new FileOutputStream(outputFile);

// Wrap the input stream in decryption logic
final CryptoInputStream<?> decryptingStream =
crypto.createDecryptingStream(provider, in)) {

// Copy the data over
IOUtils.copy(decryptingStream, out);
  }
}

자, 다 되었습니다!. 여러분은 지금 복수개의 리전에 있는 마스터 키들을 가지고 데이터를 암호화하고 로컬 KMS를 사용하여 데이터를 복호화하는 과정을 진행하신 것입니다. 이를 통해 복호화에 대한 빠른 속도와 높은 가용성을 확보하면서도 한개의 암호문만 관리하면 되는 장점을 확인할 수 있었습니다.

샘플 사례2: 위탁이나 이동성을 고려하여 서로 다른 제공자로부터 나온 마스터키들을 가지고 어플리케이션 기밀정보를 암호화하기

복수개의 마스터키를 가지고 데이터를 암호화하려는 또 다른 이유로는 암호화 키들에 대한 단일 제공자에 의존하는 것을 회피하는 것을 생각할 수 있습니다. 단일 키관리 솔루션에 얽매이지 않게 되면, 여러분들의 어플리케이션의 가용성을 향상시키는 데 도움이 되기 때문이죠. 이같은 접근은 또한 컴플라이언스나 데이터 유출방지, 또는 복수개의 제공자를 갖춰야 하는 재해복구 요건을 맞추는 데 도움이 될 수 있습니다.

여러분들은 본 포스팅의 전반부에 다루어진 기법들을 활용하여, 공탁을 위해 데이터를 암호화하거나 메인 제공자와 별개의 부가적인 복호화 마스터 키를 활용할 수 있습니다. 본 예제는 부가적인 마스터 키를 다루는 방법을 통해 KMS에 독립적인(즉 하드웨어 보안 모듈(HSM)과 같이 KMS와 별개의 키관리 인프라에 저장된 개인키와 공개키) 암호 전략을 이해할 수 있을 것입니다. (RSA키 쌍을 생성하고 관리하는 내용은 본 포스팅의 범위를 벗어납니다.)

퍼블릭 마스터 키를 가지고 데이터를 암호화 하기

데이터 암호화를 위한 다수의KmsMasterKeys를 생성하는 바로 직전의 샘플 코드와 유사하게, 이번 예제에서는 RSA 공개키를 위해 마스터키를 한개 더 만들게 됩니다. 이번 코드에서는 JceMasterKey를 이용해서Java Cryptography Extensions (JCE)내의 java.security.PublicKey 객체를 이용합니다. 아래 예제를 보시면  MultipleProviderFactory (다른 모든 마스터 키들에 연계된)로 새로 생성된 마스터키를 전달합니다. 그런 후, rsa_public_key.der라고 불리는 파일에서 공개키를 로딩합니다.

private static MasterKeyProvider<?> getMasterKeyProvider()
throws IOException, GeneralSecurityException {

// Get credentials from Roles for EC2
final AWSCredentialsProvider creds =
new InstanceProfileCredentialsProvider();

// Get KmsMasterKeys for the regions we care about
final String aliasName = "alias/exampleKey";
final KmsMasterKey useast1 = KmsMasterKey.getInstance(creds, "arn:aws:kms:us-east-1:" + ACCOUNT_ID + ":" + aliasName);
final KmsMasterKey uswest1 = KmsMasterKey.getInstance(creds, "arn:aws:kms:us-west-1:" + ACCOUNT_ID + ":" + aliasName);
final KmsMasterKey uswest2 = KmsMasterKey.getInstance(creds, "arn:aws:kms:us-west-2:" + ACCOUNT_ID + ":" + aliasName);

// Load the RSA public key from a file and make a MasterKey from it.
final byte[] rsaBytes = Files.readAllBytes(
new File("rsa_public_key.der").toPath());
final KeyFactory rsaFactory = KeyFactory.getInstance("RSA");
final PublicKey rsaKey = rsaFactory.generatePublic(
new X509EncodedKeySpec(rsaBytes));
final JceMasterKey rsaMasterKey =
JceMasterKey.getInstance(rsaKey, null,
"escrow-provider", "escrow",
"RSA/ECB/OAEPWithSHA-256AndMGF1Padding");

return MultipleProviderFactory.buildMultiProvider(useast1, uswest1, uswest2, rsaMasterKey);
}

개인키를 가지고 데이터를 복호화 하기
많은 HSM 장비들은 표준 Java KeyStore 인터페이스를 제공하거나, 적어도 기존의 자바 키 저장소 구현체를 사용할 수 있게 해주는 PKCS #11 드라이버들을 제공합니다. 다음의 복호화 코드 샘플에서는 KeyStore로부터 RSA개인키를 사용합니다.

public static void main(String[] args) throws Exception {
// Get parameters from the command line
final String inputFile = args[0];
final String outputFile = args[1];

// Get the KeyStore
// In a production system, this would likely be backed by an HSM.
// For this example, it will simply be a file on disk
final char[] keystorePassword = "example".toCharArray();
final KeyStore keyStore = KeyStore.getInstance("JKS");
try (final FileInputStream fis = new FileInputStream("cryptosdk.jks")) {
keyStore.load(fis, keystorePassword);
}

// Create a master key provider from the keystore.
// Be aware that because KMS isn’t being used, it cannot directly
// protect the integrity or authenticity of this data.
final KeyStoreProvider provider = new KeyStoreProvider(keyStore,
new PasswordProtection(keystorePassword),
"escrow-provider", "RSA/ECB/OAEPWithSHA-256AndMGF1Padding");

// Get an instance of the encryption logic
final AwsCrypto crypto = new AwsCrypto();

// Open a stream to read the encrypted file
// and a stream to write out the decrypted file

try (
final FileInputStream in = new FileInputStream(inputFile);
final FileOutputStream out = new FileOutputStream(outputFile);

// Wrap the output stream in encryption logic
final CryptoInputStream<?> decryptingStream =
crypto.createDecryptingStream(provider, in)) {

// Copy the data over
IOUtils.copy(decryptingStream, out)
}
}

결론

Envelope 암호화는 강력하긴 하지만 상세 구현에 대한 부담이 있어 왔습니다. 이번 새로운 AWS encryption SDK는 데이터 키를 관리하는데 도움을 주고, 복수개의 마스터 키 환경에서 데이터 암호화 과정을 단순화 시켜 줍니다. 결과적으로 이번 출시된 SDK를 통해 여러분들은 여러분이 구현하고자 하는 비지니스  로직에 좀더 집중할 수 있도록 해 줍니다. 또한 여러분들이 준수해야 되는 여러가지 표준 항목들을 만족시키는 암호화 라이브러리를 확보하고 있다는 점을 쉽게 입증할 수 있는 일종의 프레임 웍을 제공합니다.

이번에 AWS Encryption SDK 를 공개하게 되어 매우 기쁘고, 이것을 가지고 여러분들이 어떤 것들을 하고자 하는지 알고 싶습니다. 만약 신규SDK에 대한 코멘트나 본 포스팅 내용에 대한 어떠한 의견이라도 있다면 아래 “코멘트” 섹션에 여러분들의 소중한 의견을 남겨 주시기 바랍니다. 만약 여러분들이 다른 의문이 있다면 KMS forum을 활용해 주시길 바랍니다.

– Greg

본 글은 신규 AWS Encryption SDK 출시에 맞추어 빠르고 단순한 데이터 암호화를 및 애플리케이션 가용성을 개선할 수 있는 방법에 대한 How to Use the New AWS Encryption SDK to Simplify Data Encryption and Improve Application Availability의 글을 AWS 코리아 임기성 솔루션 아키텍트께서 번역해 주셨습니다.

AWS 보안 기술 백서 한국어 버전 대거 공개

아마존 웹 서비스에서는 2016년 1월 서울 리전 개설 이후 한국 고객들의 클라우드 보안과 관련한 다양한 정보에 대한 요구와 피드백을 받아왔습니다.

이미 글로벌 문서로 영어로 제공 중인 다양한 기술 백서 중에 특별히 보안 분야 백서를 엄선 후 한국어 작업을 진행하여, 아래와 같이 다수의 신규 보안 기술 백서를 공유할 수 있게 되었습니다.

아래 보안 기술 백서를 통해 고객들이 AWS 클라우드 보안에 대한 이해도를 높이는 데 도움이 되기를 바랍니다. 주변의 많은 분들에게 알려주시면 감사하겠습니다. (아래 링크를 누르시면, PDF 버전으로 다운로드 가능합니다.)

신규 한국어 보안 기술 백서

  • 규모별 보안: AWS 기반 거버넌스 


 – 본 기술 백서는 AWS로 워크로드를 마이그레이션할 때 자주 간과되는 장점은 제공되는 많은 거버넌스 활성 기능을 활용하여 규모에 맞는 더욱 높은 보안 수준을 달성할 수 있다는 것입니다. 이 문서에서는 AWS를 사용하여 IT 리소스에 대해 높은 수준의 거버넌스를 달성할 수 있는 방법에 대해 설명합니다.
  • 규모별 보안: AWS에서 로깅하기 


 – 본 기술 백서는 로깅과 관련된 일반적인 규정 준수 요구 사항의 개요 및 AWS CloudTrail을 사용하여 이러한 요구 사항을 충족하는 방법에 대해 설명합니다. AWS CloudTrail은 보안 및 운영 관점에서 매우 유용한 일반 로깅 도메인으로 구성되어 있습니다.
  • Securing Data at Rest with Encryption(저장 데이터 암호화)
  – 본 기술 백서는  AWS 서비스에서 데이터를 안전하게 암호화할 수 있는 옵션에 대해 개괄적으로 설명하고 암호화 키가 저장되는 위치와 암호화 키에 대한 액세스 제어 방법의 관점에서 이러한 옵션을 설명합니다. 서버 측 암호화 방법과 클라이언트 측 암호화 방법은 다양한 AWS 서비스에서 이러한 암호화를 수행하는 개별적인 예를 통해 설명합니다.
  • AWS 사용을 위한 감사 보안 체크리스트 – 본 기술 백서는 AWS 고객의 내부 규정 준수 팀과 이러한 팀의 외부 감사자 그리고 내부 검토 또는 외부 감사를 위해 AWS 사용을 평가 또는 감사하는 담당자를 대상으로 작성되었습니다. 또한 산업 또는 규제 표준에서 요구할 수 있는, 조직의 AWS 사용에 대한 보안 평가를 설계하고 실행하는 데 유용한 체크리스트를 제공합니다. 이 백서는 애플리케이션의 운영 준비 상태 평가에 유용한 운영 및 아키텍처 지침을 제공하는 운영 체크리스트 백서를 바탕으로 작성되었습니다.
  • AWS Security by Design 소개  – 본 기술 백서는 고객이 AWS 계정 설계를 정형화하고, 보안 제어를 자동화하고, 감사를 간소화하도록 해주는 보안 보장 접근법입니다. 본 백서에서는 Security by Design의 개념을 설명하고, 여러 산업계에 대규모의 보안 및 규정 준수를 유지하기 위한 4단계 접근법을 소개하며, AWS 고객이 AWS 환경에 보안을 적용하는 데 사용할 수 있는 리소스에 대해 알아보고, 제어가 작동 중인지 확인하는 방법에 대해 소개합니다.

이외, 기존에 있던 보안 컴플라이언스 관련 백서의 목록도 추가합니다.

기존 한국어 보안 기술 백서

  • AWS Security Best Practices(AWS 보안 모범 사례) – 본 기술 백서는 Information Security Management System(ISMS)를 정의하고 조직의 보안 정책 및 프로세스 세트를 구축하는 데 도움이 되는 보안 모범 사례를 제공하므로 AWS 클라우드에 있는 데이터 및 자산을 보호할 수 있습니다. 또한 AWS의 자산을 확인, 분류 및 보호하고 계정, 사용자 및 그룹을 사용한 AWS 리소스에 대한 액세스 관리 및 클라우드에서 데이터, 운영 체제, 애플리케이션 및 전반적인 인프라를 보안 조치할 수 있는 방법을 제시하는 등 다양한 보안 주제의 개요를 제공합니다.
  • AWS Risk and Compliance(Amazon Web Services: 위험 및 규정 준수)



 – 본 기술 백서는  AWS 고객이 IT 환경을 지원하는 기존의 제어 프레임워크에 AWS를 통합하는 데 도움이 될만한 정보를 제공하기 위해 작성되었습니다. 이 문서는 AWS 컨트롤을 평가하는 기본 접근법을 포함하며 고객이 제어 환경을 통합할 수 있도록 지원하는 정보를 제공합니다. 또한 일반적인 클라우드 컴퓨팅 규정 준수 문제에 대한 AWS 관련 정보를 다룹니다.
  • Overview of Security Processes(Amazon Web Services: 보안 프로세스의 개요) – 본 기술 백서는  “AWS가 내 데이터를 보호하는 데 어떠한 도움을 줄 수 있습니까?”라는 질문에 답하기 위해 작성되었습니다. 특히, AWS의 물리적 보안 운용 프로세스를 AWS 관리 하에 있는 네트워크 및 인프라의 관점에서 설명하고 서비스별 보안 구현에 대해서도 설명합니다.
  •  DDoS 대응을 위한 AWS 모범사례 – 본 기술 백서는 DDoS(Distributed Denial of Service) 공격에 대비하여 Amazon Web Services(AWS)에서 실행하는 애플리케이션의 복원력을 높이고자 하는 고객을 대상으로 합니다. 본 백서에서는 DDoS(Distributed Denial of Service) 공격의 개요, 가용성 유지에 도움이 되는 기술, 참조 아키텍처에 대한 설명을 통해 복원력 향상을 위한 아키텍처 지침을 제공합니다.

신규 AWS Certificate Manager – 무료 SSL/TLS 인증 서비스 제공

표면적으로는 단순하지만 그 이면에는 복잡한 구조인 기술이 있습니다! 웹 브라우저에 열쇠 아이콘이 있으면, 웹 사이트 데이터 전송 자체가 암호화되어 있다는 것을 보여줍니다.

웹 브라우저는 왜 녹색 열쇠를 표시할까요? SSL/TLS 인증서로 알려진 디지털 인증 파일이 있기 때문입니다. 이것은 고객과 웹 사이트 간에 인증과 신뢰를 제공하기 위한 전자 문서입니다.

SSL/TLS는 중요한 정보를 교환 할 때마다 필요합니다. 예를 들어, 사이트가 PCI-DSS, FISMA과 같이 규정 준수를 해야 하는 경우 혹은 의료 데이터 전송을 위한 HIPAA 규정에서도 SSL/TLS를 이용하도록 하고 있습니다.

SSL 인증서는 글로벌 인증 기관에서 도메인을 특정하여 발행하는 민간 인증 회사입니다. 여러분의 웹 사이트에 인증서를 취득하고자 할 경우, 인증 회사(Certificate Authority)는 해당 도메인 소유 확인 책임을 담당합니다. 그리고, 일정 기간 유효한 인증서를 발급하고 특정 도메인의 웹 사이트 암호화를 보장합니다. 기존 시스템에 인증서를 설치하는 경우, 유효 기간을 살펴보고 정기적으로 새 인증서를 발급 받아야 합니다. (인증서는 12개월 간 유효하므로 업데이트 필요)

각각의 인증서는 전자 서명되어 있습니다. 이를 통해 정당한 CA에서 발급 된 것이라는 것을 확인할 수 있습니다. 좀 더 자세히 말하면, 웹 브라우저는 인증 회사의 루트 인증서 목록을 사용하여 발급 받은 인증서를 신뢰할 수 있는 지 추적할 수 있고 이러한 정보는 웹 브라우저에서 손쉽게 확인할 수 있습니다.

위와 같이 SSL/TLS 인증서를 설정하고 관리하는 것은 수작업이 많아 쉽게 자동화 할 수 없습니다. 또한, 번거러운 절차를 거쳐서 인증서를 발급 받고 이에 대한 연간 비용을 지불해야 합니다.

이제 이러한 어려운 상황을 바꿀 때가 왔습니다!

신규 AWS 인증 관리자(Certificate Manager) 서비스
AWS 인증 관리자 (ACM) 서비스는 SSL/TLS 인증서 발급 및 관리에 대한 많은 작업을 자동화 하고 단순화 하기 위해 시작되었습니다. ACM에서 제공되는 인증서는 Amazon의 인증 기관(CA)인 Amazon Trust Services (ATS)에서 발급됩니다..

인증서에 발급되는 추가 비용이 발생하지 않습니다. SSL/TLS 인증서는 AWS Certificate Manager에서 무료로 사용하실 수 있습니다.

ACM을 사용하면 몇 분만에 SSL 암호화 기능을 사용할 수 있습니다. 인증서 발급을 요청하면, Elastic Load BalancersAmazon CloudFront에서 몇 번의 클릭으로 설정할 수 있습니다. 그 후 ACM은 자동으로 인증서를 정기적으로 업데이트 해줍니다.

인증서 자동 발급 및 설정
콘솔을 사용하여 인증서 설정 및 구축 단계를 살펴 보겠습니다. (API에서도 사용할 수 있습니다.) 예를 들어, 자신의 도메인 jeff-barr.com에서 확인 해 봅니다. AWS Certificate Manager 콘솔을 열고 Get started을 클릭합니다.

SSL을 설정하고자 하는 웹 사​​이트의 도메인 이름을 입력합니다. 원하는 도메인을 지정하고 모든 하위 도메인을 대상으로 합니다.

요청의 내용을 확인합니다.

도메인 소유자의 이메일을 열고, certificates.amazon.com에서 메일을 확인하고 strong>Amazon Certificate Approvals에 동의합니다.

사이트로 이동하여 I Approve를 클릭합니다:

이제 완료되었고, 콘솔에 인증서를 볼 수 있습니다.

인증서 배포하기
인증서가 발급되면 Elastic Load Balancers 또는 CloudFront 배포 지점에 설치할 수 있습니다.

ELB는 SSL offload를 지원하고 있기 때문에 부하 분산 서비스에 인증서를 구축하는 것이 그 뒤에 구축되는 EC2 인스턴스의 암호화를 굳이 진행할 필요가 없습니다.

CloudFront 배포는 아래와 같이 하실 수 있습니다.

정식 출시

AWS Certificate Manager (ACM)는 US East (Northern Virginia) 리전에서 사용할 수 있습니다. 다른 리전도 준비 중입니다. 이제 인증서 설정, 구축 및 정기적 업데이트를 추가 비용 없이 사용할 수 있습니다.

다른 AWS 서비스와 다른 도메인 확인 방법 등의 추가도 계획하고 있습니다. 제안 및 의견도 요망 사항이 있으면 우선 순위를 정하는 데 도움이 되겠습니다.

만약 AWS Elastic Beanstalk을 사용하신다면, Enabling SSL/TLS (for free) via AWS Certificate Manager 문서도 참고해 보시기 바랍니다.

Jeff;

이 글은 New – AWS Certificate Manager – Deploy SSL/TLS-Based Apps on AWS의 한국어 번역입니다.

EBS 부팅 볼륨 암호화 신규 기능 출시

암호화는 데이터 보호 전략의 가장 중요한 영역입니다. 최근 1~2년 사이에 AWS는 클라우드 기반 정보를 저장하는 데 있어 암호화 방식을 획기적으로 단순화 시키는 많은 기능들을 선보였습니다. 이들 기능 대부분은 AWS Key Management Service (KMS)을 기반으로 하며, 아래와 같은 주제로 블로그에서 다루었습니다.

더 자세한 사항은 AWS KMS와 통합 가능한 서비스 목록을 살펴 보시기 바랍니다.

많은 고객들은 AWS를 통해 좀 더 쉽게 데이터 암호화를 할 수 있게 되었고, 이를 통해 굉장히 어려웠던 일을 AWS를 통해 손 쉽게 해결할 수 있었다는 피드백을 보내주셨습니다.

EBS 부팅 볼륨 암호화
오늘 EBS 부팅 볼륨의 암호화 지원을 시작합니다. 이 기능은 최근에 EBS 스냅샷 복사 기능에서 부터 암호화 지원을 시작하였습니다.

EBS 부트 볼륨 암호화를 사용할 수 있는 Amazon Machine Images (AMIs)를 생성하고 이 AMI를 EC2 인스턴스 시작 시 사용하면 됩니다. 저장한 데이터는 모두 암호화 되며, EC2 인스턴스와 EBS 볼륨 사이의 데이터 역시 암호화 됩니다. 복호화는 인스턴스에서 필요시에만 이루어져서 메모리에만 저장됩니다.

이 신규 기능을 통해 EBS 데이터 볼륨을 비롯해서 부팅 볼륨 데이터까지 암호화 할 수 있음으로서 보안, 규정 준수 및 감사에 큰 도움이 될 것입니다. 더 나아가 KMS를 통해 암호화 키의 사용 내역 등을 감사 및 추적할 수도 있습니다.

각 EBS를 포함한 AMI는 하나 이상의 EBS 볼륨 스냅샷을 참고합니다. 첫번째 참조는 부팅 볼륨의 이미지이고, 다른 하나는 데이터 볼륨입니다. AMI를 시작하면 EBS 볼륨이 각 스냅샷으로 부터 만들어집니다. EBS가 이미 데이터 볼륨에 대한 암호화를 지원하기 (볼륨과 연계된 스냅샷 포함) 때문에 볼륨 전체에 대한 암호화를 지원하는 싱글 AMI를 만들 수 있으며, 원한다면 개별 KMS 고객 마스터 키를 각 볼륨에서 사용할 수 있습니다.

암호화된 EBS 부팅 볼륨 만들기
암호화된 EBS 부팅 볼륨 만드는 과정은 기존 AMI(리눅스나 윈도)에서 시작합니다. AMI을 직접 소유하거나 공개되어 있는 것을 바로 사용할 수 있습니다. 또는 이미지로 부터 AMI를 시작하여, 암호화된 EBS 부팅 볼륨을 이미지로 만들 수 있습니다. (예를 들어 윈도 AMI). 암호화된 AMI는 개인적으로만 사용가능하며 다른 AWS 계정에 공유할 수 없습니다.

AMI와 암호화된 스냅샷으로 ec2-copy-image 명령어를 이용하여 간단하게 새로운 AMI를 만들 수 있습니다.

$ ec2-copy-image -r source_region -s source_ami_id \
  [-n ami_name] [-d ami_description] [-c token] \
  [--encrypted] [--kmsKeyID keyid]

만약 --encrypted 파라미터와 --kmsKeyID 없이 암호화를 요청하면, 기본 EBS 고객 마스터키 (CMK)를 사용합니다.

예를 들어, Amazon Linux AMI를 복사하는 방법입니다.

$ ec2-copy-image -r us-east-1 -s ami-60b6c60a  \
  --encrypted --kmsKeyID arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef

암호화된 부팅 볼륨과 AMI를 EC2 관리 콘솔에서 만들 수도 있습니다.

암호화된 EBS 부팅 볼륨 사용하기
새 AMI를 만들고 나면, 새로운 인스턴스를 띄울 때 마다 사용할 수 있습니다. 코드를 수정하거나 운영 과정을 바꿀 필요가 없습니다.

정식 출시
본 기능은 Beijing (China)을 제외한 모든 AWS 리전에서 사용 가능하며, 암호화 기능에 따른 추가 비용은 없습니다.

Jeff;

이 글은 New – Encrypted EBS Boot Volumes의 한국어 번역입니다.

2015년 11월 AWS 최신 보안 뉴스

새로운 SOC 심사 결과 발표- 신규 3개 서비스 포함

새로운 SOC(Service Organization Controls) 심사 결과를 발표하게 되어 무척 기쁩니다.

AWS SOC 프로그램은 매년 반기 별로 광범위한 감사 결과를 발표합니다. SOC 리포트(전신 SAS 70)은 2009년부터 계속되고 있으며, 해를 거듭할 수록 많은 통제 요소와 보다 많은 서비스들이 포함되고 있습니다. 제3 의 평가 기관인 Ernst & Young으로부터, AWS가 American Institute of Certified Public Accountants (AICPA)의 Security Trust Principles을 잘 준수 하고 있다는 점을 평가 받고 있습니다. AWS SOC 프로그램은 정보 보안, 기밀성, 개인정보 보호에 대한 투명한 정보를 고객들에게 계속적으로 제공할 예정입니다.

그리고 이번 결과에는 다음 3가지 AWS 서비스들이 SOC 결과 리포트에 추가되었습니다.:

    • AWS Key Management Service (KMS)
    • Amazon Simple Email Service (SES)
    • Amazon WorkSpaces

결과적으로 SOC리포트에 포함된 서비스의 갯수는 26개로 증가 하였고, 또한 34개의 엣지 로케이션도 포함되었습니다.

최신 AWS SOC 1 와 SOC 2 Security & Availability 리포트는 2015년 4월 1일부터 9월 30일까지의 기간 동안하게 되며, 앞으로도 6개월의 주기로 재 심사 받을 예정입니다. 최신 SOC 1 혹은 SOC 2 리포트를 신청하려면, AWS Sales and Business Development를 연락하시기 바랍니다. 더불어, 여러분의 규제 요건에 따라 SOC 3 리포트를 AWS Compliance 웹 사이트를 통해 다운 받거나 직접 보기 하실 수 있습니다.

리포트에 관해 좀 더 질문이 있으시면 관련 FAQ사이트 를 방문해 보세요.

공개된 모든 인증 내역을 보시려면, AWS Published Certifications 참조 하시고, 최신 AWS Compliance news가 여기(AWS Compliance – Latest News)에서 보실 수 있습니다.

– Chad Woolf, Director of AWS Risk and Compliance

IAM 사용자를 위한 SMS MFA 기능 프리뷰

AWS는 새롭게 복합 인증을 지원하는 Short Message Service (SMS) 에 대한 미리보기를 발표했으며 이것은 여러분들이 보안 모범사례를 쉽게 구축하는데 도움을 줄 것입니다. 지금까지 여러분들은 하드웨어나 가상 MFA토큰방식의 서비스를 IAM 사용자에 적용하였을 것입니다. 이번 발표된 기능은 MFA 방식으로 IAM 사용자를 인증할때, 모바일 기기상에서 텍스트 메세지 기반으로 할 수 있도록 해줍니다. AWS 관리 콘솔에 로그인 할때 IAM 사용자는 모바일 기기를 통해 텍스트로 된 보안 코드를 받게 되고, 브라우져 상에 전달된 코드를 입력함으로써 본인임을 인증 받게 됩니다.

SMS MFA 는 모든 모바일 기기에서 사용하기 쉬운 텍스트 기반의 OTP기능을 제공합니다. 또한 모바일 앱을 다운로드 받을 필요가 없고 특별한 하드웨어를 필요로 하지도 않습니다. 모바일 기기 간에는 번호가 이동될 수 있기 때문에 여러분들은 모바일 기기를 교체, 업그레이드, 분실했을 경우에도, 편하게 이동하여 AWS에 대한 접근 통로를 유지할 수 있습니다. 이 기능을 이용하는데 별도의 요금은 없지만 SMS 이용 요금이 발생할 것이며 이 부분은 통신사에 따라 달라집니다.

이 기능을 이용하기 위해 여러분들은 ‘AWS account에서 미리보기 신청하기’ 과정을 해야 합니다. 미리 보기를 수락하고 1, 2일 이내에 여러분의 AWS Account에 SMS MFA기능을 활성화 할 것이라는 내용의 이메일을 받게 됩니다. 이 기능에 대한 좀 더 자세한 정보는 SMS 텍스트 메세지 MFA 이용하기에 있습니다.

새로 나온 SMS MFA에 대한 여러분들의 생각을 알고 싶습니다. 사용후 피드백을 주시거나 IAM forum 을 방문하시어 코멘트를 남겨 주시기 바랍니다.

– Vikram

IAM 콘솔 검색 기능 소개

지금까지 AWS IAM콘솔 상의 피드백 링크를 통해 여러분들의 의견을 받아 왔습니다. 지금까지 피드백 중, 빈번하게 들어오는 요청은 바로 특정 Access Key ID를 가진 IAM사용자를 찾을 수 있는 가 하는 문제였습니다. 이와 같은 기능을 구현하면서, 동시에 AWS고객들이 IAM 콘솔상에서 쉽게 뭔가를 찾을 수 있어야 한다고 생각했으며, 이에 대한 답변이 바로 IAM콘솔 검색 기능입니다.

이번 포스팅에서, IAM콘솔 검색기능을 통해, 이름, 계정정보 제공자, 타스크, 엑세스 키 등의 기준을 가지고 IAM엔티티들(사용자, 그룹, 롤 등)을 찾는 과정을 진행하게 됩니다. 상세 내용 →

AWS KMS 서비스와 EncryptionContext를 통해 암호화된 데이터를 보호하는 방법

중요한 기밀 데이터를 위한 AWS KMS의 가장 중요하고 핵심적인 개념은 EncryptionContext입니다. EncryptionContext를 제대로 잘 활용하게 되면 어플리케이션 보안을 향상시키는데 엄청난 도움이 됩니다. 이번 포스팅에서는 EncryptionContext 이 얼마나 중요한지 살펴보고, 암호화된 데이터의 무결성을 보호하기 위한 간단한 예제가 제공됩니다.

EncryptionContext는 KMS 가 암복호화 작업을 수행하는 데 제공되는 키-값 맵핑(둘다 문자열) 입니다. 암호화와 복호화 간의 맵핑은 반드시 상호 매치되어야 하며 그렇지 않다면 복호화 요청은 실패하게 됩니다.

EncryptionContext 아래의 3가지 이점을 제공합니다.:

  • 부가적인 인증 데이터
  • 감사 로그
  • 인가 컨텍스트

상세내용 →

IAM 정책 시뮬레이터를 통해 리소스수준의 권한 테스트 하기

여러분들은 AWS IAM의 policy simulator 를 통해 리소스 레벨의 퍼미션에 대한 테스트 및 검증하고 파악하는 것을 훨씬 더 쉽게 할 수 있게 됩니다. 이것은 리소스의 목록을 보여주고 AWS액션이 요구하는 필수 파라메터들을 자동으로 제공합니다. 이 기능을 통해 보다 정확한 조건으로 시뮬레이션하고 새로 작성한 정책이 예상대로 동작하는지 검증할 수 있게 됩니다. 현재까진 이 기능이 아마존 EC2, IAM, CloudFormation에서만 지원된 다는 것을 주목하시기 바랍니다. 계속적으로 다른 서비스 들에 대해서도 확대해 나갈 예정입니다.

IAM 정책 시뮬레이터는 두가지 UI개선 사항이 있습니다. 첫 번째는 Simulation Settings가 새롭게 Global Settings으로 변경되었습니다. Global Settings 섹션에는aws:SourceIP정책 변수와 같은 시뮬레이션 상의 모든 액션에 적용될 정보들을 입력하게 됩니다. 두번째는 Results 테이블이 Action Settings and Results 테이블에 들어왔습니다. 이 테이블에서 여러분들은 모든 필요한 리소스와 각 액션에 대한 조건 값들을 입력하게 됩니다. 이를 통해 AWS API 요청을 만들 때 같은 조건으로 시뮬레이션하게 해줍니다. 상세 내용 →

Amazon WorkDocs 보안 설정하기

Amazon WorkDocs (이전 Amazon Zocalo) 는 관리형으로 제공되는 안전한 기업 저장소이자 공유 기능을 제공하는 서비스입니다. 여러분들은 파일에 대해 코멘트를 남기고, 다른 사용자의 피드백을 요청하는 과정에서 이메일 첨부로 많은 파일들을 첨부하던 방식을 탈피할 수 있습니다. Workdocs는 암호화, 세부 공유, 접근 제어 등 다양한 보안 기능을 제공합니다. 게다가 Workdocs는 현재 ISO/IEC 27018:2014 를 준수하고 있으며 이것은 여러분들의 컨텐츠에 대한 개인 정보 보호 관련 수준에 대한 내용입니다.

본 포스팅에서는 이와 같은 WorkDocs 보안 기능들에 대해 다루게 되면 이를 통해 여러분의 WorkDocs 싸이트의 보안 수준을 어떨게 향상 시킬 수 있는지를 소개드립니다. 상세 내용 →

AWS 는 ISO 27018 개인 정보 인증 취득

본 포스팅에서는 AWS 가 성공적으로 새로운 인증 ISO/IEC 27018:2014 을 성공적으로 취득했음을 안내합니다. 이 인증은 클라우드 상에서의 개인정보(PII) 보호와 관련된 프랙티스들을 다루며, AWS가 클라우드 상에서 고객의 개인정보를 안전하게 취급할 책임을 잘 견지하고 있음을 나타냅니다. 이 개인정보 보호 관련 인증은 ISO 27001 인증 프로그램의 일부입니다

ISO 27018 은 클라우드 상의 개인정보 보호와 관련하여 첫번째로 나온 국제 규범입니다. ISO 27018 인증 취득은 AWS가 고객의 컨텐츠에 대한 개인 정보 보호와 관련된 통제 장치를 가지고 있다는 점을 입증합니다. 상세 설명 →

AWS KMS 암호화 키의 삭제 지원

AWS 는 새롭게 KMS에서 관리되는 암호화 키의 삭제 기능을 제공합니다. 암호화 키 관련된 전체 라이프 사이클을 완성할 수 있게 되었으며, 본 포스팅에서는 새로운 기능의 소개와 함께 키를 삭제하기 전에 어떤 일을 해야 하는지, 그런 후 어떤 절차로 삭제하는 지를 보여줍니다.

암호화 키를 삭제한다는 것이 잠재적으로 위험한 행동이라는 것을 꼭 인지하기 바랍니다. 키가 없을 때 데이터 복구가 불가능 한 점 때문에, 예정된 삭제 요청 뒤에도, 즉각 삭제를 하는 것이 아니고 복호화 요구가 발생할 가능성이 있는 일정 기간의 대기 시간을 둘 수 있습니다. 7일에서 30일 간에 대기 시간을 설정할 수 있으며, 그 기간 동안 삭제 요청을 취소하고 다시 키를 복원할 수 있습니다. 상세 내용 →

AWS 와 EU 세이프 하버

최근, 유럽 연합의 대법원은 지난 15년간 유지되어온 US-EU 세이프 하버 프레임 웍과 관련, EU권역에서 미국으로 개인정보를 이전하는 것이 더이상 유효하지 않다는 판결을 내렸습니다.

고객 개인 정보의 보안을 각별히 다루고 있는 AWS에서는 이에 대한 면밀한 검토 끝에, AWS 의 고객 혹은 파트너들이 AWS상에서 자신들의 고객 개인정보를 다룰 때 EU 권역에서 미국으로 정보를 이관하는데 문제가 없으며 어떠한 부가적인 절차도 필요 없음을 확인 드리게 되었습니다. 이것은 AWS 가 EU 데이터 보안 당국(Article 29 Working Party로 알려진)과 맺었던 AWS 데이터 처리 절차 부가조항과 모델 조항에 의거하며, 미국을 포함하여 EU 바깥으로 개인정보 이관이 가능하게 됩니다. 또한 AWS 고객은 EU Data Protection Directive (Directive 95/46/EC) 조항을 완벽히 준수하는 상태로서, AWS상에서 운영 중인 글로벌 업무를 지속할 수 있습니다. 그리고 AWS의 데이터 처리 부가 조항은 고객이 EU에서 설립되었든 글로벌 회사든 간에, 개인정보를 취급하는 모든 AWS 고객에게 적용됩니다. 보다 자세한 내용은 이곳을 방문해 보세요 AWS EU Data Protection FAQ.

EU 권역 밖으로 개인정보를 이전할 필요가 없는 고객들을 위해, 지속적으로 다음과 같은 통제 및 보안 기능을 제공할 것입니다.:

  • 고객들은 그들의 고객 정보에 대한 소유권을 그대로 유지하게 되며, 어떤 AWS 서비스를 통해 처리, 저장, 호스팅 되는지 선택할 수 있습니다.
  • 고객들은 특별한 지역적인 요건에 맞추어 그들의 고객 정보가 어디에 저장되는지 선택할 수 있습니다.
  • 고객은 그들의 고객 정보에 대한 전송 중 또는 저장 시 보안 상태에 대해 본인들의 암호화 키를 가지고 수행할 수 있도록 선택할 수 있습니다.

부가적인 정보는 여기를 방문해 보세요 AWS Privacy and Data Security FAQ.

AWS에 있어서, 고객으로부터의 신뢰는 저희의 최우선 과제이며, 고객이 계속해서 AWS의 보안, 컴플라이언스와 관련하여 이점을 누릴 수 있도록 노력해 나가고 있습니다.

– Steve

re:Invent 2015 신규 보안 서비스—Amazon Inspector, AWS WAF, and AWS Config Rules

이번 re:Invent에서, AWS 는 여러분의 보안 수준을 향상하고 AWS상에서 운영 중인 어플리케이션을 보호하기 위한 2개의 새로운 보안 서비스와 한 개의 신규 기능을 소개했습니다.

Amazon Inspector는 자동화된 보안 진단 서비스로서 AWS상에서 운영 중인 어플리케이션에 대한 보안 혹은 컴플라이언스 관점의 이슈들을 적발해 줍니다. Amazon Inspector 는 자동으로 어플리케이션의 취약점이나, 모범 사례를 기준으로 위반 사례들이 있는지 점검하게 되며, 점검 이후, 경감 조치를 위한 자세한 절차를 담고 있는 리포트를 생성해 줍니다.

빠르게 시작할 수 있도록, Amazon Inspector는 PCI DSS와 취약점 정의서 등 수 백 가지 규칙들을 담고 있는 지식 기반을 포함하고 있습니다. 예를 들자면, 리모트 루트 로그인이나, 취약한 소프트웨어 버전들 같은 것들이 포함됩니다. 이와 같은 규칙들은 정기적으로 AWS 보안 연구원들에 의해 업데이트 됩니다. 상세 설명 →

11월의 AWS 보안 뉴스는 AWS코리아의 보안 분야 솔루션 아키텍트로 일하시고 있는 임기성님께서 작성해 주셨습니다.

 

2015년 10월 AWS 최신 보안 뉴스

re:Invent 보안 및 규정 준수 세션 동영상 공개

지난 10월 6일-9일간 라스베가스에서 열린 AWS re:Invent 2015에서는 Security & Compliance 트랙의 다양한 세션이 발표 되었습니다. 모든 세션은 동영상으로 제공하고 있으니 참고하시기 바랍니다.

동영상 목록 바로 가기 →

 

특정EC2 인스턴스에 대한 접근을 단일 VPC안으로 제한하기

고객들이 클라우드 기술 지원 엔지니어에게 종종 다음과 같은 질문을 합니다. “어떻게 하면 사용자의 EC2인스턴스 접근 범위를 단일 VPC 내로 제한할 수 있나요?” 본 포스팅에서는 해당 질문에 대해 AWS IAM 정책과 Role을 이용하여 접근 레벨을 제한하는 방식을 통해 해답을 제시합니다.

EC2 상에서, 사용자의 인스턴스 접근을 단일 VPC로 제한하기 위해서는 아래와 같은 2개의 질문들을 고려해야만 합니다.

  • 어떤 API 액션들이 Amazon Resource Names (ARNs) 과 조건들을 지원하는가?
  • 어떤 API 액션들이 ARNs과 조건들을 지원하지 않는가?

리소스 레벨의 퍼미션을 같는 API 액션은 IAM정책의 Resource 엘리먼트 내 ARN에 대한 지원을 갖습니다. 다음 링크에서 EC2 리소스 레벨 퍼미션에 대한 기본 정보를 확인할 수 있습니다(Demystifying EC2 Resource-Level Permissions). 또한 Supported Resource-Level Permissions for Amazon EC2 API Actions 문서에서는 ARN을 지원하는 EC2액션의 전체 목록이 있습니다. 그 목록에서는 어떤 조건이 어떤 ARN에 적용될 수 있는지도 보여줍니다.

자세히 읽기 →

신규 출시: AWS 보안 교육 클래스

보안과 관련된 새로운 AWS 교육 커리큘럼을 시작합니다. 보다 안전한 AWS 아키텍쳐를 만들고 주요 컴플라이언스 요건들을 충족 시킬 수 있는 방법들을 제시하면서, AWS 공유 책임 모델 상에서 여러분들의 클라우드 보안 목표를 달성할 수 있도록 디자인 된 2개의 교육 과정이 제공됩니다.

신규 클래스에 대한 좀 더 자세한 내용은 아래와 같습니다.:

  • AWS Security Fundamentals: 3시간짜리 무료 온라인 클래스로서 기본적인 클라우드 컴퓨팅 소개와 AWS 접근제어, 거버넌스, 로깅, 암호화 방법 을 포함하여 AWS의 보안 개념을 소개합니다. 본 교육과정은 AWS를 전혀 접해보지 못했거나 조금 경험 해보신 보안 담당자들을 주요 대상으로 하며 보안과 관련된 컴플라이언스 규정들, 리스크 관리 전략, AWS보안 인프라를 감사하는 절차 등을 교육합니다.
  • Security Operations on AWS: 3일동안 교육장에서 시행되는 본 교육은 AWS서비스의 보안 기능들과 데이터나 시스템들을 안전하게 관리하기 위한 베스트 프랙티스들을 자세하게 다룹니다. 여러분들은 규제나 컴플라이언스 기준들과 AWS 상의 워크로드 감사에 대한 실 사례들에 대해 배우게 되실 것입니다. AWS보안 제품과 기능들을 통해 다음단계로 보안 운영 레벨을 높이는데 도움을 줄 핸즈 온 연습과정도 포함됩니다.

본 교육 과정에 대해 좀 더 자세히 아시려면 AWS Training를 방문해 보세요. 여기(find a class )에서 교육 과정에 대한 상세 내용을 찾아 보실 수 있습니다.

빠르게 보안 베스트 프랙티스 준수하기 위한 두 가지 팁

보안 전문가에게는 베스트 프랙티스을 잘 준수하고 있는 지를 확인하는 것이 주요 임무입니다. 베스트 프랙티스를 준수하는 일은 단순하고 지루한 수작업을 통해 많은 시간이 필요하게 됩니다. 본 글에서는 과도한 시간 소비를 줄이면서 보안 베스트 프랙티스들을 AWS서비스들을 통해 어떻게 구현할 수 있는지에 대한 2개의 예제를 보여줍니다.

AWS Identity and Access Management (IAM) 베스트 프랙티스는 엑세스 키를 주기적으로 교체하거나 삭제하는 것과 관련됩니다. 그러나 어떤 엑세스 키가 사용되었는 지를 찾는 다는 것은 보통 AWS Cloud Trail 로그를 면밀하게 뒤져본다는 뜻입니다.

지난 5월 30일자 웨비나 (webinar)에서 소개되었던, 최근 사용된 엑세스키 기능(access key last used)을 이용하면 키 교체 작업을 좀더 쉽게 할 수 있습니다. 마지막으로 사용된 일자와 IP주소를 알게 되면, 어떤 키가 어디에 사용되었는지 좀더 쉽게 파악할 수 있습니다. 여러분들은 또한 엑세스 키가 오랫동안 사용된 적이 없는 것도 파악 할 수 있습니다; 삭제되었거나 오래된 사용하지 않는 엑세스 키들을 잘 관리할 수 있는 좋은 보안 태도를 유지하는데 도움을 줍니다.

자세히 읽기 →

민감한 S3버킷에 대한 접근 허용 Whitelist 정책 만들기

Amazon S3 버킷에 대한 안전한 접근을 위해 AWS는 다양한 옵션들을 제공합니다. 여러분들은 access control lists (ACLs), AWS Identity and Access Management (IAM) 사용자 정책이나 S3 엑세스 정책 등을 이용할 수 있습니다. S3엑세스 정책 내에서도 몇가지 옵션들을 선택할 수 있습니다. 여러분들은 Principal 엘리먼트 를 활용하여, 디폴트 정책이 Deny인 AWS Account목록에 대한 접근을 허용할 수도 있습니다. 또한 Principal 엘리먼트의 형제 요소인 NotPrincipal 엘리먼트를 가지고, 명시적으로 몇몇 지정된 사용자 외 어느 누구도 특정 리소스에 접근할 수 없도록 할 수 있습니다.

본 글에서는 어떻게 NotPrincipal엘리먼트를 통해 이런 민감한 S3버킷에 대한 엑세스 정책을 만들 수 있는지 보여드립니다.

자세히 읽기 →

접근 제어 정책을 테스트를 위한 신규 API 소개

AWS Identity and Access Management (IAM)은 여러분들이 IAM사용자, 그룹, 그리고 역할에 대한 퍼미션을 검증하고 감사하기 위한 신규 API을 발표했습니다. 이와 같은 2가지 API를 CLI나 SDK 형태의 IAM policy simulator를 활용할 수 있습니다.

새로운 iam:SimulatePrincipalPolicy API 를 가지고, 프로그램적으로 IAM정책이 의도된 대로 동작하는지, 특정 리소스 나 액션 별로 테스트할 수 있습니다. 신규 작성된 정책이나 갱신된 기존 정책을 iam:SimulateCustomPolicy API 를 호출하여 테스트 할 수 도 있습니다.

본 포스팅에서는 iam:SimulatePrincipalPolicy API를 사용하여 특정 사용자의 퍼미션을 검증합니다. 이 API는 목적하는 시뮬레이션의 타입에 대응하는 정책들을 포함하는 몇가지 파라메터들을 갖습니다.

자세히 읽기 →

9월의 AWS 보안 뉴스는 AWS코리아의 보안 분야 솔루션 아키텍트로 일하시고 있는 임기성님께서 작성해 주셨습니다.

AWS 신규 보안 교육 과정 소개

오늘날 IT 전문성에 있어 정보 보안은 매우 중요한 주제입니다. 고객들이 클라우드로 이전하는데 있어서도 매우 필요한 지식입니다.

AWS에서는 이러한 보안에 중점을 둔 교육 과정을 새로 개설하게 되었습니다. AWS 공동 보안 책임 모델을 기반으로 어떻게 하면 가장 안전하게 보안 요구 사항을 충족하는 클라우드 아키텍쳐를 구성할 수 있을지에 대한 자세한 교육 프로그램을 제공합니다.


AWS의 공동 보안 책임 모델(AWS Shared Responsibility Model)

아래는 새 보안 교과 과정에 대한 소개입니다.

  • AWS Security Fundamentals – 3시간 무료 온라인 과정입니다. AWS 보안에 대한 기본 개념 및 접근 제어 및 관리, 운영 및 로깅, 암호화 등을 다루며 보안 분야에 근무하지만 AWS에 대한 업무 지식이 높지 않는 분에게 권합니다. 보안에 관련된 규제 및 위험 관리 기법 및 AWS 보안 인프라 감사 등에 대한 기초 지식을 얻을 수 있습니다.
  • Security Operations on AWS – 3일간 기술적 심화 과정으로서 AWS 보안에 대해 심층적으로 다룹니다. 교육을 통해 AWS 서비스 및 보안에 대한 핵심 기능을 다루게 됩니다. 보안 인증 표준 및 각 규제 업무에 대한 케이스 등을 직접 실습을 통해 이해하고 배우게 되어 클라우드 보안에 대한 보다 높은 수준의 지식을 제공합니다.

더 자세한 내용은 AWS 교육과정 페이지를 통해 새로운 보안 교육 과정에 대해 살펴 보시고, 슈퍼트랙을 통해 진행하는 국내 교육 과정 일정도 확인해 보시기 바랍니다. (역자 주)

— Jeff;

이 글은 New AWS Security Courses (Fundamentals & Operations)의 한국어 번역입니다.