Category: セキュリティ


(開発中)AWS IoT Device Defender: IoTデバイス群を安全に

IoT においてスケールは新しい意味を持ちます。昨年、私は幸運にも平均1平方メートルごとに環境センサーがある巨大な工場を見学しました。そのセンサーは温度、湿度、空気純度を毎秒数回計測し、汚染物質に対する早期警戒を提供します。お客様からは何百万台、何千万台のコンシューマ向けIoTデバイスの展開に関心を持たれていると聞きました。

地理的に分散して展開されている強力で長寿命なデバイスのセキュリティ課題は重要です。しかし、限定的なCPUパワーやメモリしか無く、暗号化やその他のデータ保護手段の実施が制限される事があります。

このセキュリティ課題に対処し、自信を持って大規模にIoTデバイスを展開できるように、IoT Device Defender を開発中です。詳細はリリースまでに変更になる可能性がありますが、AWS IoT Device Defender は以下の利点を提供できるよう設計しています。

継続的な監査 – AWS IoT Device Defender はデバイスに関連するポリシーを監視して、指定された設定が行われているよう助けます。ベストプラクティスからの逸脱を探し、カスタムの監査ルールをサポートしているため、あなたのIoTデバイス展開に特有の状態をチェックすることができます。例えば、他のデバイスからセンサーデータを購読されているような侵害されたデバイスでは無いか確認することができます。監査はスケジュールにもとづいて実施したり、必要に応じて実施したりできます。

リアルタイム検知とアラーム – AWS IoT Device Defender は侵害されたデバイスが行うような通常とは異なる動作を見つけ出し、素早く警告を出します。類似したデバイスの動作を長期間モニタリングし、許可されていない試行アクセスや接続パターンの変化、インバウンド・アウトバウンド両方のトラフィックパターンの変化を探し出すことで実現します。

素早い調査と緩和 – 何か通常とは異なることが起こって警告を受取った際、AWS IoT Device Defender は警告についての状況を始め、問題の調査や緩和を行うのを手助けするツールを提供します。デバイスの情報、デバイスの統計情報、診断ログ、過去のアラートなどを全て簡単に確認できます。デバイスを再起動したり、権限を取り消したり、工場出荷時のデフォルトに戻したり、セキュリティパッチを送ったりなども選択できます。

乞うご期待

より詳細な情報やハンズオン記事を可能な限り早くお届けしたいと考えています。乞うご期待下さい。

— Jeff (翻訳は SA 辻 義一 が担当しました。原文はこちら)

政府統一基準に対応したAWSクラウド利用のセキュリティリファレンス提供の取り組み@パブリックセクターシンポジウム ~AWS Summit Tokyo 2017~

 

政府統一基準に対応したAWSクラウド利用のセキュリティリファレンスについて

 

アクセンチュア株式会社、株式会社NTTデータ、PwCあらた有限責任監査法人、富士ソフト株式会社は共同で、内閣サイバーセキュリティセンター(NISC)制定の政府統一基準に対応したAWSクラウド利用のセキュリティリファレンスを作成し、2017年3月23日より無償提供を開始しました。本リファレンスは、2016年8月31日に改訂された「政府機関の情報セキュリティ対策のための統一基準(平成28年度版)」を背景としており、クラウドの選定および利用の際のガイドラインやセキュリティ要件等の基準が追加されたことに対して、AWSクラウド環境におけるセキュリティ対応策の詳細を網羅的に提示しています。

サイバーセキュリティ基本法に基づいてNISCが制定する政府統一基準(以下、NISC統一基準)は、国内の政府機関が実施すべきセキュリティ対策の指針として幅広く利用されています。一方で、その要件やチェック項目は複雑かつ広範にわたるため、AWSクラウド等のクラウドを利用する際に、そのガイドラインや要件を満たすことを確認することは容易ではありませんでした。このたび共同開発した本リファレンスは、各社の情報セキュリティ対策に関する知見と実績を結集したものです。政府統一基準への準拠のノウハウを具体的に提示することにより、各政府機関が安全で信頼性の高いシステムを実現することを支援できるものと期待しています。

 

パートナー各社の取り組み

 

2017年5月30日に開催された「パブリックセクタ― シンポジウム ~AWS Summit Tokyo 2017 – Dive Deep Day~」にて、本リファレンスの作成者であるパートナー各社によるパネルディスカッションが行われ、各社の取り組みが紹介されました。

(more…)

ランサムウェア「WannaCry」に関するAWSへの影響について

 

2017年5月12日頃からWannaCry(別名、WCry、WanaCrypt0r 2.0、Wanna Decryptorなど)と呼ばれるランサムウェア(身代金マルウェア)による被害が世界中から報告されはじめました。日本でも複数の大手企業がこのマルウェアに感染したというニュースが報道されています。

このマルウェアは、ファイル共有および印刷共有サービスを提供するWindows SMBサーバー上に存在する脆弱性を悪用します。デフォルトでは、SMBサーバーはUDPポート137/138およびTCPポート139/445で動作します。また、Windowsオペレーティングシステムの複数のバージョンが対象で、Microsoft社は、この脆弱性を解消するため、2017年3月14日にMicrosoft Windows SMB Server(4013389)の重要なセキュリティ更新プログラムをリリースしました。詳細は、Microsoft MSRC blog もしくは Microsoft Security Bulletin MS1​​7-010 をご参照ください。

 

WannaCryによるAWSサービスへの影響

 

EC2 Windows

 

Amazon EC2上のWindowsに関しては、AWSから提供されている2017.04.12以降のリリースのAMIであれば、この脆弱性の被害を受けていません。また、自動更新が有効になっている場合も、この脆弱性は解消されています。2017.04.12より前のAMIを使用している、かつ、自動更新を有効にしていないお客様は、前述のセキュリティ更新プログラムをインストールすることをお勧めします。

AWSでは、セキュリティのベストプラクティスに従い、セキュリティグループの設定を確認し、その必要のあるインスタンスおよびリモートホストに対してのみ前述のポートへのアクセスを許可することを、常にお勧めしています。デフォルトでは、EC2セキュリティグループはこれらのポートをブロックします。

AWSのWindows AMIのリリースノートはこちらです。

 

WorkSpaces

 

Amazon WorkSpacesに関しては、2017 年4月15日以降にWorkSpaceを作成した、または、自動更新を有効にしたAmazon WorkSpacesのお客様は、この脆弱性の影響を受けません。 2017年4月15日より前にWorkSpaceを作成し、自動更新を有効にしていないお客様は、セキュリティ更新プログラムをインストールするか、 WorkSpaceを終了して再作成することをお勧めします。

 

Directory Service

 

AWS Directory Serviceに関しては、2017/05/20時点でパッチ適用作業が完了しました。お客様による対応は必要ありません。Amazon Simple AD、 AD Connector、AWS Cloud Directory はこの問題の影響を受けていません。最新情報につきましては、下の原文へのリンク先をご参照ください。

 

Elastic Beanstalk

 

AWS Elastic Beanstalkに関しては、2017 年5月4日以降のWindowsサーバーで構築された環境は、本問題の影響を受けません。ただし、既存のElastic Beanstalk Windows環境のアップデートは常に推奨しています。AWS管理コンソールから、もしくは、環境を再構築することでアップデート可能です。Elastic Beanstalkの現時点での最新のリリースノートはこちらです。

 

AWSによるセキュリティ速報(原文)は、こちらをご覧ください。

 

AWSサービスの効果的な使い方

 

Amazon Inspectorは、Amazon EC2インスタンスに対してエージェントを導入し、セキュリティ診断を行うサービスです。CVE(共通脆弱性識別子)のルールパッケージに基づいた診断も可能で、WannaCryに関連するCVE-2017-0143からCVE-2017-0148の脆弱性の検証ができます。AWS管理コンソール、CLI、APIから診断を実行できます。診断結果は、AWS管理コンソールで表示したり、エグゼクティブサマリー含むPDF形式のレポートとしても取得できます。

AWSコンソール上でのAmazon Inspector 結果一覧画面例

 

AWSコンソール上でのAmazon Inspector 結果詳細画面例

 

詳しくは、Amazon Inspector ユーザーガイドをご覧ください。

 

Amazon EC2 Systems Managerは、Amazon EC2インスタンスおよびオンプレミスサーバーに対してエージェントを導入し、ソフトウェアインベントリ収集やOSパッチ適用、OS構成変更などを一元的に管理できるサービスです。インスタンスに対して、シェルスクリプトやPowerShellコマンドの実行、パッチ適用の時間指定や定期実行などの管理タスクを簡単に自動化できます。今回のような、Windowsのセキュリティ更新プログラム適用にもご利用いただけます。詳しくは、Amazon EC2 Systems Manager ユーザーガイドをご覧ください。

 

推奨するAWSソリューション

 

今回のようなランサムウェアに対する最も有効な対策は、常日頃からバックアップを取得・管理し、セキュリティ推奨構成を保っておくことです。AWSではバックアップ&復旧に関する各種ソリューションの情報が提供されています。

上記の情報も参考に、これからも安心・安全なAWSライフをご満喫ください。

桐山 隼人, セキュリティソリューションアーキテクト
坪 和樹, クラウドサポートエンジニア
長谷川 淳, クラウドサポートエンジニア

サーバレス JavaScript アプリケーションで SAML: Part I

このブログ記事は AWS の Richard Threlkeld, Gene Ting, Stefano Buliani によって AWS Compute Blog に投稿された「SAML for Your Serverless JavaScript Application: Part I」の翻訳記事です。

このブログ記事に掲載したコードや SAM テンプレートの全体は samljs-serverless-sample GitHub レポジトリにあります。手動でリソースを作成する事もできますが、GitHub レポジトリにある SAM テンプレートを使ってリソースを作成することを強くお勧めします。


SAML 認証連携を実現したくありませんか? AWS プラットフォームで使うことができる一時的なセキュリティ認証情報の発行を、短期間の SAML アサーションを交換で実現できます。

エンタープライズ Web アプリケーションを構築する時は、認証や認可が一貫して行われ業界のベストプラクティスに沿っている事が必須事項です。AWS では、ユーザに一意のIDを作成し、AWS のサービスにアクセスできる短期間の認証情報を使えるようにできる Amazon Cognito と呼ぶサービスを構築しました。これらの認証情報は、IAM ポリシーに基づくロールと関連付けて、異なるリソースへのアクセスを許可や拒否する事ができます。

この記事では、Amazon Cognito で SAML プロバイダと認証連携を行う異なる方式を紹介していきます。応用すると、異なるタイプの認証プロバイダ (IdP) と連携させることができます。Facebook、Twitterやその他のサードパーティのソーシャルメディアを IdP にする事もできます。Amazon Cognito のユーザプールと認証連携させ、独自のマネージドユーザディレクトリを作成することもできます。

例えば、ユーザが Active Directory Federation Services (ADFS) で認証する事ができる JavaScript アプリケーションを構築したいかもしれません。ユーザは AWS 認証情報で許可された範囲で API を呼び出して得た情報をアプリケーションに表示させたり、DynamoDB テーブルに書き込むことができます。AWS Mobileブログの記事「Announcing SAML Support for Amazon Cognito」では、新しい SAML 機能について Java、Android、iOS のサンプルコード付きで紹介しました。この記事では、ADFS フローのカスタマイズについて JavaScript のサンプルを交えて詳細に紹介します。

シナリオ

この記事では、クライアント側のフローを紹介します。SAML アサーションは Amazon API Gateway 経由で渡され、ブラウザ上のコードは Amazon Cognito Identity から直接認証情報を受け取ります。次回のブログ記事では、バックエンド側の処理を紹介します。SAML アサーションと認証情報は、AWS Lambda ファンクション内で処理でき、ビジネスロジックを実現するようカスタマイズしたり監査履歴を取ったりする事ができます。

このシナリオの全コードは SAM テンプレート含め、GitHub の samljs-serverless-sample レポジトリにあります。手動でリソースを作成する事もできますが、GitHub レポジトリにある SAM テンプレートを使ってリソースを作成することを強くお勧めします。

サーバレスのアーキテクチャとなっていますが、ADFS との連携は従来のコンピュート サービスである EC2 インスタンスのようなコンポーネントで置き換えることもできます。ADFS の用語や定義については「Claims-based identity term definitions」を参考にして下さい。

前提条件

このブログ記事では、ADFS が動作している環境が必要です。以下の事を実施して下さい。:

  1. AWS コンソールで ADFS との認証連携を設定。「Enabling Federation to AWS Using Windows Active Directory, ADFS, and SAML 2.0」を AWS CloudFormation テンプレートと共に参考にしてください。
  2. サインインページ(https://localhost/adfs/IdpInitiatedSignOn.aspx)からユーザ example\bob が ADFS-Dev と ADFS-Production の両方のグループとして認証出来ることを確認します。
  3. Amazon Cognito Identity のプールを作成します。

ADFS 設定の概要

チュートリアルを始める前に、幾つか AWS と SAML の設定を確認しましょう。まず、前提条件にある通り IAM ロールが作成されているかから確認して下さい。アプリケーション用に新しく IAM ロールと AD グループを作成してもかまいません。この記事では、「Enabling Federation to AWS Using Windows Active Directory, ADFS, and SAML 2.0」の記事の通り ADFS-Dev と ADFS-Production を利用します。

  1. IAM コンソールで、ロールを選択し ADFS-Ddev を選択し、信頼関係 (Trust Relationships) のタブを開き、以下のコードのようになっている事を確認します。:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Federated": "arn:aws:iam::YOURACCOUNTNUMBER:saml-provider/ADFS"
          },
          "Action": "sts:AssumeRoleWithSAML",
          "Condition": {
            "StringEquals": {
              "SAML:aud": "https://signin.aws.amazon.com/saml"
            }
          }
        }
      ]
    }

このポリシーは “ADFS” という SAML IdP で認証されたユーザがロールを引き受ける事を許可しています。また、ポリシーには条件が含まれており、SAML アサーション内の AudienceRestriction が https://signin.aws.amazon.com/ である事となっています。SAML アサーションは ADFS から AWS に HTTP POST で SAMLResponse というヘッダとして送られて来ます。前提条件に記載されている設定が実施済みであれば、ADFS コンソールでは以下のように設定されており、利用者(Ralying Party)の URL として AWS メタデータ URL が指定されています。詳細については、「認証レスポンスの SAML アサーションを設定する」を確認して下さい。



認証後、ADFS は利用者のアプリケーションに自動的にリダイレクトします。

上記のスクリーンショットでは、認証後の SAMLResponse の値を見るために Chrome を利用しました。「トラブルシューティングのためにブラウザで SAML レスポンスを表示する方法」に記載されているとおり、他のブラウザでも同様のことを行えます。SAMLResponse を貼り付ければ、Audience、Roles や Destination などの値を見ることができる “SAML Decoder” がインターネット上にあります。パート 2 のブロク記事では、これをプログラムで行う方法を紹介します。

ADFS からサーバレス Web サイトにリダイレクトし、Amazon Cognito に繋げる

この1つ目のブログのシナリオの方が難しくありません。多くの組織での要件にベストな流れとなっています。ユーザは ADFS で認証して Amazon Cognito から AWS 認証情報を受け取り、アプリの中でアクションを行えます。このサンプルアプリケーションは:

  1. ADFS で認証するログイン メカニズムを変更して取り出すことで、SAMLResponse ヘッダを取り出します。ユーザが S3 上に配置されたウェブサイトを訪問した際に、自動的にこの仕組みが行われます。
  2. ADFS-Dev ロールの信頼ポリシーを変更し、Active Directory の AWS-gDev グループのメンバであれば Amazon Cognio から一時的な認証情報を受け取れるようにします。
  3. ユーザのロールを選択するコードをアプリケーションの中に組み込みます。このブログ記事では、ADFS-Dev ロールを選択します。

参考までに、AWS Console への認証連携の場合 #3 と同様の内容は、ADFS のウェブページ IdpInitiatedSignOn.aspx からリダイレクトされた後にラジオボタンでロールをクリックして選択する事で実現されます。より詳しい内容については、セキュリティブログの「Enabling Federation to AWS Using Windows Active Directory, ADFS, and SAML 2.0」をご覧下さい。もしユーザが 1 つの Active Directory グループのメンバだけであれば、SAMLResponse には複数のロールが含まれておらず、その場合は #3 は省略されます。構成は以下の図のとおりとなります。

チュートリアル: ADDFS からサーバーレス Web サイトにリダイレクトし、Amazon Cognito に繋げる

まず、サーバレス Web サイトをセットアップし、認証情報を取得するログインフローを開始させます。シングル Web アプリを配置するのには S3 を使用します。

S3 バケットの作成

  1. S3 のコンソールで、「バケットを作成」を選択して一意なバケット名を入力します。以下の例では “serverlessweb” としますが、皆様は何か他の名前として下さい。
  2. バケットを作成後、詳細設定のページで「プロパティ」を選び、「バケットポリシーの編集」をクリックします。
  3. 以下のポリシーを設定して下さい。YOURBUCKETNAMEGOESHERE は置き換えて下さい。このポリシーは、バケットに入っている HTML や JavaScript などのファイルを誰でも GET リクエストを行えるようにします。Web サイトにアクセスすると Web ブラウザは GET リクエストを発行し、このポリシーがリソースの読み込みをユーザに許可します。
    {
      "Version": "2012-10-17",
      "Statement": [
          {
              "Sid": "PublicReadForGetBucketObjects",
              "Effect": "Allow",
              "Principal": "*",
              "Action": "s3:GetObject",
              "Resource": "arn:aws:s3:::YOURBUCKETNAMEGOESHERE/*"
          }
      ]
    }
  4. 「静的ウェブサイトホスティング」を選択し、「ウェブサイトのホスティングを有効にする」とします。フォームに「index.html」と「error.html」を入力します。

  5. 次に、HTML ファイルをバケットに追加して、https://YOURBUCKETNAME.s3-website-REGION.amazonaws.com をブラウザで開きページが見れるか確認します(YOURBUCKETNAME と REGION は読み替えて下さい。)。まずは以下の HTML をテンプレートとして使って下さい。
    <!DOCTYPE html>
    <html>
     <head>
      <title>
       Amazon Cognito SAML Example
      </title>
      <script src="aws-sdk.min.js">
      </script>
     </head>
     <body>
      <h1>
       Testing SAMLResponse
      </h1>
     </body>
    </html>
      
  6. JavaScript SDK から圧縮(Minify)されたバージョン aws-sdk.min.js をダウンロードして、HTML ファイルと同様にバケットに保存し、エラー無くロードできることを確認します。

(オプション) CloudFront ディストリビューションのセットアップ

次に進める前に、さらにもう1つセットアップしたいと思います。CloudFront ディストリビューションです。S3 静的 Web ホスティングに CloudFront やその他の CDN を使用することで、独自ドメイン名で SSL を使用することができるようになります。

API Gateway から HTTP サイトにリダイレクトする事もできるため強制ではありませんが、Web サイトや認証や認可のシステムはエンドツーエンドで HTTPS を使うべきです。以下がセットアップで行う内容です。

  1. CloudFront コンソールで、Web タイプのディストリビューションを作成します。
  2. 「Viewer Protocol Policy」には、「HTTPS Only」を選択します。
  3. 「Origin Domain Name」には S3 バケットを選択します。
  4. ベストプラクティス通り、「Restrict Bucket Access」を選択します。こうすることで、バケットが直接アクセスされることから守ることができます。これで CloudFront ディストリビューションのドメイン名で、サイトにアクセスできるようになると思います。

ログイン メカニズム

次に、ログイン メカニズムを構築します。

ウェブサイトではログインさせるために、ボタンを押させることも出来ますし、自動的に認証情報が有効かどうか確認してからログインのフローにリダイレクトをさせる事もできます。

この例では、2 つ目のアプローチを取ります。ユーザがページを訪れると JavaScript を使ってすぐに状態を確認し、初回の訪問であれば認証情報を入手するためにリダイレクトさせます。このページにはログインの流れの中で API Gateway から再度リダイレクトされても来るため、ログインの進捗に合わせ ADFS のログインページにリダイレクトさせるのと同様に、届いた SAMLResponse のデータをキャプチャする事も必要です。今回の例では、以下のような流れになります。:

function loginWorkflow(){
    var activelogin = sessionStorage.getItem('activelogin');
    if (activelogin=='inProgress'){                                   //ADFS login redirect from API Gateway
        var samlResponse = getParameterByName('SAMLResponse');
        sessionStorage.removeItem(‘activelogin’);
        if (samlResponse != null){
            getSamlCredentials(samlResponse.replace(/\s/g, ''));
        }
    }
    else if (activelogin === null) {                                 //First page visit. Redirect to ADFS login.
        var RPID = encodeURIComponent('urn:amazon:webservices');
        var result = 'https://localhost/adfs/ls/IdpInitiatedSignOn.aspx' + "?loginToRp=" + RPID;
        sessionStorage.setItem('activelogin', 'inProgress');
        window.location = result;
    }
    else {//Credentials exist, page refresh, etc.
        console.log('activelogin already exists in session and the value is ' + activelogin);
    }
}

上記では、ADFS IdP への呼び出しを始める時にセッション変数を設定し、SAMLResponse (getParameterByName() で取り出せる)と一緒にWeb サイトに戻って来た時には getSamlCredentials() 関数を呼び出します。

AWS が必要とする SAMLResponse 値は POST binding のみがサポートされていますが、S3 の静的ウェブサイトは、GET リクエストしか受け取ることができません。このため、JavaScript アプリケーションが ADFS からの SAMLResponse を受け取るために API Gateway を利用します。Lambda をプロキシとして利用し、SAMLResponse をクエリ文字列に入れて静的ウェブサイトにリダイレクトで戻ってこさせます。

Lambda 関数の設定

  1. Lambda のコンソールで、GitHub レポジトリにある /Scenario1/lambda/redirect/index.js を使って samlRedirect という名前の関数をランタイムは Node.js 4.3 で作成します。実行ロールにはログ保存のために CloudWatch Logs の権限だけが必要です。
  2. 基本的な実行ロールが既になければ、関数作成時に新しいロールを Lambda のコンソール上で作成する事ができます。
  3. LOG_LEVELREDIRECT_URL という名前の環境変数を作成し、LOG_LEVEL には info を REDIRECT_URL には S3 の静的ウェブサイトの URL(静的ウェブホスティングを有効にしている場合にはバケットのプロパティに表示されているエンドポイント、あるいは先程記載したオプションの CloudFront ディストリビューション設定をした場合はドメイン名)を設定します。

API Gateway 設定

  1. API Gateway のコンソールで、SAMLAuth あるいは何か似た名前を付けた API を作成します。
  2. リソース」 を選択し、「SAML」という名前の子リソースを作成します。
    lambdasamlone_7.png
  3. POST」メソッドを作成します。「統合タイプ」には「Lambda」を選択し、「samlRedirect」関数を指定します。「メソッドリクエスト」の「HTTP リクエストヘッダー」に「SAMLResponse」を設定します。
    lambdasamlone_8.png

先ほど作成した samlRedirect 関数では、クエリ文字列に SAMLResponse を付けた静的ウェブサイトの URL を location プロパティに設定します。リダイレクトが実行されるように、API Gateway が 302 ステータスコードを返すように設定します。

  1. メソッドレスポンス」でステータスコード 200 を削除し、302 を追加します。「レスポンスヘッダ」に「Location」を設定し、「レスポンス本文」には「コンテンツタイプ」に「application/json」、「モデル」に「Empty」と設定します。
    lambdasamlone_9.png
  2. 「統合レスポンス」で「メソッドレスポンス」のステータスが 200 のものを削除し、302 のものを追加します。レスポンスヘッダ「Location」の「マッピングの値」には「integration.response.body.location」を設定します。
    lambdasamlone_10.png
  3. Lambda 関数が SAMLResponse と RelayState を受け取れるように、「統合リクエスト」で「コンテンツタイプ」が 「application/x-www-form-urlencoded」の「本文マッピングテンプレート」を以下のように追加します。:

    {
    "SAMLResponse" :"$input.params('SAMLResponse')",
    "formparams" : $input.json('$')
    }
  4. 変更を保存します。
  5. /saml リソースで「アクション」から「CORS の有効化」を選択します。「CORS を有効にして既存の CORS ヘッダを置換」を行いします。

  6. アクション」から「API のデプロイ」を選択します。「ステージ」には「Prod」や似た名前を使用します。「ステージエディター」で、「SDK 生成」を選択します。「プラットフォーム」には「JavaScript」を選択し、「SDK の生成」を行い、どこかのフォルダに保存します。ADFS の設定に必要になるため、トップに表示されている「URL の呼び出し」をメモします。

ADFS リダイレクト設定

  1. ADFS のコンソールで、「利用信頼関係」にある Amazon Web Services のプロパティを開き、「利用者を自動的に更新する」の項目を無効(チェックしない)にします。
    lambdasamlone_11.png
  2. エンドポイント」のタブを開き、既にあるエンドポイントを編集します。「バインディング」は「POST」のままで、「URL」には API Gateway でデプロイした API の「URL の呼び出し」を入力します。URL の最後に 「/saml」を追加します。
    lambdasamlone_12.png
    これまで構築してきたことを復習します。:

    • Web ページはユーザが認証情報を持っていなければ、ADFS のログインページにリダイレクトします。
    • 認証に成功したら、ADFS は SAMLResponse を付けて Web ページにユーザを戻します(API Gateway 経由)。
    • SAMLResponse は元の Web ページにクエリ文字列の一部として渡されます。

    Amazon Cognito から認証情報を取得するには、JavaScript コードでこのクエリ文字列を取り出し getCredentialsForIdentity 呼び出しのパラメータの一部として渡す必要があります。

  3. Amazon Cognito の Federated Identities のコンソールで、前提条件でセットアップした認証プールを開きます。認証プールの ID を確認し、以下の JavaScript コードの先頭に利用するリージョン名と同様に記載します。
    const identityPool = 'YOURCOGNITOPOOLID';
    AWS.config.region = 'COGNITOREGION'; // Region
    
    AWS.config.credentials = new AWS.CognitoIdentityCredentials({
        IdentityPoolId: identityPool
    });
    
    var identityId = localStorage.getItem('cognitoid');
    if (identityId != null){
        console.log('Identity ID: ' + identityId);
        loginWorkflow();
    } else {
        console.log('Calling GetID');
        AWS.config.credentials.get(function(){
            console.log('Identity ID: ' + AWS.config.credentials.identityId);
            localStorage.setItem('cognitoid', AWS.config.credentials.identityId);
            identityId = localStorage.getItem('cognitoid');
            loginWorkflow();
        });
    }

このコードは、アプリケーションでユーザに Amazon Cognito で生成した一意の ID を付与する最初の部分です。その上で、クエリ文字列に SAMLResponse の値を入れて返させるために loginWorkflow() を呼び出します。

以下は Stack Overflow で紹介されているサンプルのユーティリティ関数で、クエリ文字列から特定の項目を取り出すためのものです。

function getParameterByName(name, url) {
    if (!url) {
      url = window.location.href;
    }
    name = name.replace(/[\[\]]/g, "\\$&amp;");
    var regex = new RegExp("[?&amp;]" + name + "(=([^&amp;#]*)|&amp;|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}

これで Web ページは ADFS から BASE64 エンコードされた SAMLResponse を取得しました。これを Amazon Cognito に渡せば AWS 認証情報を取得することが出来ます。Cognito の getSamlCredentials() 関数は以下のコードで、loginWorkflow() から呼び出されます。:

function getSamlCredentials(samlResponse) {
    var role = 'arn:aws:iam::ACCOUNTNUMBER:role/ADFS-Dev';
    var params = {
        IdentityId: identityId,
        CustomRoleArn: role,
        Logins: {
            'arn:aws:iam::ACCOUNTNUMBER:saml-provider/ADFS' : samlResponse,
        }
    };

    cognitoidentity.getCredentialsForIdentity(params, function(err, data) {
        if (err) console.log(err, err.stack);
        else {
            console.log('Credentials from Cognito: ');
            console.log(data.Credentials);
        }
    });
}

ARN にある ACCOUNTNUMBER は2つとも書き換える必要がある事に注意して下さい。今回は使用するロールがソースに直書きされています。もし、SAML クレームに複数のロールが入って返されないのであれば、このパラメータは省略することもできます。引き受けるロールを何かしらのロジックで選択するようにしたい場合もあると思います。このブログ記事のパート II ではクライアント側ではなくバックエンドでこれをできるようにする内容を含める予定です。

また、logins map にあるキーは IAM コンソールで作成した ADFS の IdP 登録の ARN で、値は samlResponse です。これもアカウント番号に書き換える必要があります。この情報により Amazon Cognito は SAMLResponse の値が信頼している対象の ADFS からのものであるか検証できます。

この時点でこのコードを試しても動作しません。Amazon Cognito の認証プールで、認証プロバイダとして SAML IdP を有効にする必要があります。

  1. Amazon Cognito の Federated Identities のコンソールで、プールを選択し、Authentication Providers までスクロールし、SAML を選択します。ADFS の IdP を示すチェックボックスを選択します。
  2. Save Changes をクリックします。
    lambdasamlone_13.png

次に、Amazon Cognito が有効な SAMLResponse アサーションを受け取った時に、ユーザがロールを引き受けられるように信頼ポリシーを変更します。Amazon Cognito は STSAssumeRoleWithWebIdentity API を呼び出してこれを実現します。

IAM のコンソールで、ADFS-Dev ロールの信頼ポリシーを以下のポリシーに編集します。(JavaScript コードのように適切な位置に Amazon Cognito のプール ID を挿入します。):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Federated": "cognito-identity.amazonaws.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "cognito-identity.amazonaws.com:aud": "YOURCOGNITOPOOLID"
        },
        "ForAnyValue:StringLike": {
          "cognito-identity.amazonaws.com:amr": "authenticated"
        }
      }
    }
  ]
}

これで Amazon Cognito の信頼ポリシーは設定できました。Web ページをテストして下さい。AWS サービスのリクエストへの署名に使える認証情報はコンソールログに (AccessKey, SecretKey, Token) の 3 つが含まれる形で “data” オブジェクトで出力されます。アプリケーションの共通のシナリオは、AWS_IAM 認証に設定された API Gateway のメソッド呼び出しを行うことです。認証情報は SDK のリクエストを使うことで渡す事ができます。上記の呼び出して指定したロールにその API を呼び出す権限があれば、メソッド呼び出しは成功します。

例えば、API Gateway で API を作成した場合、メソッドに AWS_IAM 認証を有効にできます。上記で指定されたロール(logins mapで指定)に、メソッド呼び出しの権限があることを確認して下さい。より詳しいことは、「API Gateway へのアクセスを IAM アクセス権限で制御する」をご覧下さい。API をデプロイした場合、SDK の生成を使ってそのステージの JavaScript SDK を生成してダウンロードできます。これからのメソッド呼び出しを Web ページに組み込む事ができます。より詳しいことは、「API Gateway で生成した JavaScript SDK を使用する」をご覧下さい。トピックの最後に、apigClientFactory.newClient コンストラクタにアクセスキーシークレットキーをどうやって渡すことができるか確認しましょう。

Amazon Cognito Identity は短期間だけ有効な認証情報(1 時間で無効になる)を利用するため、一時的なアクセスキー、シークレットキー、セッショントークンを、apigClientFactory.newClient コンストラクタに渡します。:

        var apigwClient = apigClientFactory.newClient({
        accessKey: data.Credentials.AccessKeyId,
        secretKey: data.Credentials.SecretKey,
        sessionToken: data.Credentials.SessionToken
    });

機能の動作確認ができる Web ページのコードは、GitHub レポジトリ内の /scenario1/website/index.html にあります。同じディレクトリにある configs.js ファイルを更新します。リージョン、Cognito Identity のプール ID、SAML IdP の ARN、ADFS-Dev ロールの ARN を変更します。SAM テンプレートを使って API Gateway に AWS_IAM 認証の MOCK エンドポイントを作成する事もでき、連携された認証情報が機能するか Web ページ上のテストボタンで確認する事ができます。

lambdasamlone_14.png

最後に

チュートリアルを通じて SAML 認証や Amazon Cognito を使った AWS 認証について深いレベルで理解する手助けになる事を願っています。まだ完了していなければ、少し時間をかけて頂き、GitHub レポジトリの samljs-serverless-sample にあるコードを実際に動かし確認して下さい。また感想についても教えてください。

このシナリオは最初のステップとして十分かもしれませんが、組織によってはより多くのことをする必要があるかもしれません。例えば、ロールの選択をユーザに任せたいやビジネスロジックに基づき独自の IAM 範囲を実装したい事もあるかと思います。このシリーズのパート 2 ではこれらをどのようにしたら実現できるかを見ていきたいと思います。

[訳注] このブログで紹介している方法では、ADFS におけるデフォルトの AWS の証明書利用者設定を変更します。そのため、同じ ADFS 環境で AWS のマネージメントコンソールへ認証連携してアクセスさせる事とは同時に実現できません。

原文: SAML for Your Serverless JavaScript Application: Part I (翻訳: SA 辻 義一)

AWS Artifactのご紹介:コンプライアンスレポートへの高速なアクセス

私はAWS Artifactを発表できることを嬉しく思います。AWSのお客様は、AWS マネジメントコンソールを使って、無償かつセルフサービスで、AWS コンプライアンスレポートへアクセスできるようになりました。

AWSの多くのお客様は、ISOSOC、そしてPCIに関するAWSのコンプライアンスレポートを監査人や規制当局に提供しています。これには、AWSインフラストラクチャとサービスの現在および過去のコンプライアンスレポートが含まれます。 あなたは今、コンピュータまたはモバイルフォンからAWSマネジメントコンソールにサインインし、関連するレポートを数分で取得する事ができます。 また、監査人や規制当局にAWS Identity and Access Management (IAM) の権限を使用して、1つまたは複数のAWSコンプライアンスレポートへの直接アクセスをさせることができます。

AWSのリスクとコンプライアンス担当ディレクターのChad WoolfはArtifactのビジョンについてこう語ります。「AWSが提供するセキュリティを評価する観点において、顧客と監査人に選択肢と利便性を提供できることに私たちはうれしく思っています。」Woolfは言います。「AWS Artifactのリリースは、AWSが監査業界を変革するきっかけとなり、時間のかかるマニュアルの監査から、クラウドによる継続的で高度に自動化された環境へと移行します。」

あなたは今日から、AWS マネジメントコンソールから監査レポートのダウンロードを開始することができます。 多くの文書は機密情報であり、Amazonの機密保持契約条件に同意する必要がありますが、それらの条件を確認して同意すると、レビュー文書に即座にアクセスできます。Getting Started with AWS Artifactも参照してください。

Artifactの詳細については、Artifact home pageを参照してください。 AWS クラウドコンプライアンスと認定の詳細については、AWS Cloud Compliance home pageをご覧ください。

– Sara
TAGS: AWS Artifact, Compliance reports

(日本語訳はSA藤倉が担当しました。原文はIntroducing AWS Artifact: Speeding Access to Compliance Reports

 

新発表 – AWS Key Management ServiceでのBring Your Own Keys機能

AWS Key Management Service (KMS) は暗号鍵のシームレスな中央集中管理を提供します。私達のお客様は、鍵管理インフラストラクチャ(KMI)に関する、可用性、スケーラビリティ、物理的なセキュリティ、ハードウェアメンテナンスを自動的にハンドルするこのフルマネージドなサービスをとても気に入っています。また、KMSは、作成、ローテーション、ライフサイクル管理機能を持つ一つのダッシュボードで鍵管理を集中化します。初期費用無し、カスタマーマスターキー(CMK)1つ当たり月額$1の利用価格をベースとして、KMSは、S3, EBS, RDS, Redshift, およびその他のKMSとインテグレートされたAWSサービス内に保管されたデータを容易に暗号化することが出来ます。

多くのAWSのお客様は、鍵を作成して管理するのにKMSを利用しています。しかしながら、KMSが提供するその他の機能を活用しながら、鍵に対するローカルコントロールを維持したいというお客様がいらっしゃいます。お客様は私たちに、世代や鍵の保管場所に関するローカルコントロールは、よりセンシティブなワークロードをクラウドで稼働させるためのセキュリティとコンプライアンス要求を満たすのに役立つと仰っています。

Bring Your Own Keys 
このような重要なユースケースをサポートするために、本日、KMSにユーザー独自の鍵を持ち込むことが可能になったことを発表できることを嬉しく思います。この機能により、極めてセンシティブなワークロードが保護でき、AWSの外に鍵のセキュアなコピーを保持することが可能になります。この新しい機能により、RSA PKCS #1標準をサポートする全ての鍵管理およびHSM(Hardware Security Module)ソリューションからの鍵のインポートが可能になり、その鍵をAWSサービスおよびアプリケーションから利用することが可能になります。また、KMSは詳細な監査情報を提供するためにAWS CloudTrailと協調して動きます。全てをまとめると、高可用性を提供するためにAWSを利用すれば、鍵のライフサイクルと耐久性に強大なコントロールを得ることができます。今日のほとんどの鍵管理ソリューションはHSMをバックエンドに使っていますが、全てのHSMが鍵管理ソリューションを提供するわけでは有りません。

インポートプロセスは、AWSマネージメントコンソールを使う,  AWS CLIを使う,  あるいは KMS APIをコールすることによって開始できます。オープンな環境に秘密鍵を転送させないために、インポートプロセスでは、アカウントにユニークな、KMSによって提供される公開鍵を使って、事前にユーザーのKMIの鍵をラップすることが求められます。鍵をラップするために、PKCS #1 スキームを利用することができます。

私は、Importing Key Material in AWS Key Management Serviceの指示に従って、KMSコンソールでCreate keyをクリックすることから始めます:


エイリアスと説明を入力し、外部(External)を選択し、“I understand…”チェックボックスにチェックを付けました:


それから、鍵管理のためのKMS APIを許可するIAMユーザーのセットを選びます。(このステップは、次に行うようにKMSおよび外部キーの両方に適用されます。):


次に、鍵を使ってデータの暗号化/復号化ができるIAMユーザーのセットを選択します:


キーポリシーを確認し、ラッピングキーとインポートトークンをダウンロードしました。ラッピングキーは、私がKMSにインポートして使おうとしている256bitの秘密鍵を暗号化するのに利用する2048bitのRSA公開鍵です。インポートトークンは、私の鍵をKMSに正しくインポートさせるためのメタデータを含んでいます。


ZIPファイルを展開し、ラッピングキーを私のEC2インスタンス上のディレクトリ上に配置しました。それから、opensslコマンドを2度使いました:一度目は秘密鍵を生成するためで、2度目はその秘密鍵をラッピングキーでラップするためです。インポートする256bit鍵を生成するためにopensslを便利な方法で利用している事に注目してください。本番データ用としては、鍵の生成と保管にもっとセキュアな方法(商用の鍵管理やHSMソリューションが望ましい)を利用すべきです。

$ openssl rand -out plain_text_aes_key.bin 32
$ openssl rsautl -encrypt -in plain_text_aes_key.bin -oaep \
-inkey wrappingKey_fcb572d3-6680-449c-91ab-ac3a5c07dc09_0804104355 \
-pubin -keyform DER -out enc.aes.key

最後に、“I am ready to upload…”をチェックしてNextをクリックし、鍵の有効期限と共に鍵マテリアルを指定して、全ての情報が集まります。有効期限を過ぎた後はAWSから利用できなくなるので、要件がはっきりするまで有効期限無しのオプションを選択したいと考えるかもしれません。いつでも同じ鍵を再インポートして、有効期限を後からリセットすることができます。


Finishをクリックして、鍵が有効化され利用できるようになりました:

これが私がやらなければいけなかったことの全てです!

私は鍵の有効期限を設定したので、KMSは自動的に鍵の有効期限までの残り時間を追跡するためのCloudWatchメトリックを生成しました。このメトリックに対して、有効期限に近づいた時に鍵を再インポートするためのリマインダーとしてCloudWatchアラームを作成することが可能です。鍵が有効期限切れになったら、CloudWatchイベントが生成されます。これを利用してプログラマティックにアクションを取る事もできます。

Available Now

この新しい機能は、AWS GovCloud (US)および、中国(Beijing)を除く全てのコマーシャルAWSリ―ジョンでご利用可能です。本日から使いはじめることが出来ます。

Jeff;(翻訳はSA布目が担当しました。原文はこちら)

AWSが新しいPCI DSS 3.2を採用する最初のクラウドサービスプロバイダに

2016/2017サイクルのアマゾンウェブサービスPCI DSS 3.2 コンプライアンスパッケージがご利用可能になったことを発表できることを嬉しく思います。AWSは、新しくリリースされたPCI Data Security Standard(PCI DSS) version 3.2に対するアセスメントを成功裏に完了した最初のクラウドサービスプロバイダ(CSP)です。また、これは強制的なデッドラインである2018年2月1日の18ヶ月前に達成されました。リクエストによってご利用可能なAWS Attestation of Compliance (AOC)には、最も最近追加されたAmazon EC2 Container Service (ECS), AWS Config, および AWS WAF (ウェブアプリケーションファイやーウォール)を含む、26のPCI DSS認定サービスが掲載されています。AWSは、この国際的な情報セキュリティおよびコンプライアンスプログラムにコミットしています。新しい基準に対して可能な限り早く再び対応することは、情報セキュリティを最優先としてしているAWSのコミットメントを例証しています。AWSのお客様(およびそのお客様)は、最新かつ最も成熟したPCIコンプライアンス要求のセットに対してAWSのプロダクトとサービスがテストされていることを知りながら、クレジットカード情報(およびその他のセンシティブデータ)をクラウドの中で保管し、処理する運用を自信を持って行うことができます。

 

What’s new in PCI DSS 3.2?

PCI Standards Councilは、利用可能な要件の最新セットとして、2016年4月に PCI DSS 3.2 を発表しました。PCI DSS バージョン3.2では、オンラインクレジットカードトランザクションにおける暗号化、アクセスコントロール、変更管理、アプリケーションセキュリティ、リスクマネージメントプログラムまわりの要求が修正され、明確化されました。PCI Security Standards CouncilのChief Technology OfficerであるTroy Leachによる具体的な変更には以下が含まれます:

  • 変更管理プロセスが、(年次のアセスメントに代わって)継続的なモニタリング環境の実装の一部として必要とされる
  • サービスプロバイダはクリティカルセキュリティコントロールシステムの障害について検知と報告が求められる
  • ペネトレーションテストの要求が年次から6ヶ月に一度に増加
  • カードデータを扱うシステムへのコンソール外の管理者アクセスについて多要素認証が求められる
  • サービスプロバイダは、職員がセキュリティポリシーと運用手順に従っているかを確認するための四半期ごとのレビューを行う必要がある

コンプライアンスパッケージの用途

AWS PCI DSS コンプライアンスパッケージは、AWS のお客様およびそのコンプライアンスアドバイザーが、AWS サービスプロバイダー PCI DSS アセスメントのスコープ、およびAWSプロダクトをお客様のカードホルダーデータ環境の一部として利用する際の責任範囲に対する期待を理解するのに利用されることを意図しています。お客様及び監査人は、AWS PCI FAQ、セキュリティベストプラクティス、および「AWSクラウドにおけるPCIコンプライアンス」テクニカルワークブックに記載されている推奨事項についてよく理解する必要があります。

コンプライアンスパッケージは以下の点でもAWSのお客様を支援します:

  • カードホルダーデータ取り扱い環境をAWSでホストする計画
  • PCI DSS アセスメントの準備
  • AWS上でカードホルダーデータ取り扱い環境のデプロイメントに対するアセス、文書化、認定

加えて、AWS PCI DSS コンプライアンスパッケージは、AWS の Attestation of Compliance (AoC)を含んでいます。AoCは、PCI SSC 認定審査機関によって提供され、AWSがPCI DSSレベル1に準拠したサービスプロバイダであることを証明しています。レベル1サービスプロバイダは、最も厳しいアセスメント要求が求められる最高のレベルであり、年間 300,000 を超えるトランザクションの保存、処理、および伝送を行うサービスプロバイダに求められるものです。AoCはまた、お客様にAWSのインフラストラクチャが全てのPCI DSS 要求事項に適合しているということの保証を提供します。注意:決済ブランドの、サービスプロバイダに対する年次のPCI DSS コンプライアンス検証プロセスの一部として、AWS AoC は Visa および MasterCard に承認されています。

また、コンプライアンスパッケージには、PCI DSS 要求事項を満たすためのAWSとお客様の間の責任共有モデルを例示する責任範囲サマリーが含まれています。このドキュメントは認定審査機関(QSA)によって検証されたものであり、ドキュメントの内容はAWS Report on Complianceに沿っています。

このドキュメントには以下が含まれています:

  • エグゼクティブ・サマリー、ビジネス記述、PCI DSS スコープ内サービスの記述
  • PCI DSS 責任要求 ―  スコープ内サービスにおけるAWSとお客様の責任範囲
  • Appendix A1: シェアードホスティングプロバイダに対する追加 PCI DSS 要求
  • Appendix A2: SSL および古い TLS を利用している要素に対する追加のPCI DSS 要求

AWS PCI DSS コンプライアンスパッケージをリクエストするには、AWSの営業担当および事業開発担当にご連絡下さい。このパッケージやその内容についてご質問のある方は、AWS の担当営業または事業開発担当にご連絡いただくか、 AWS コンプライアンスWebサイトで情報をご確認下さい。

 

追加のリソース

Chad Woolf
Director, AWS Risk and Compliance (翻訳はSA布目が担当しました。原文はこちら)

【新機能】 暗号化された EBS スナップショットのクロスアカウントコピー

AWS は既に、 Amazon Elastic Block Store (EBS) ボリュームとスナップショットの暗号化をサポートし、AWS Key Management Service (KMS)によって暗号化キーの保管、管理が行うことができます。また、他の AWS アカウントへの EBS スナップショットのコピーをサポートし、スナップショットから新しいボリュームを作成することができます。本日、暗号化された EBS スナップショットをAWS リージョン間で移動できる柔軟性とともに、アカウント間でコピーする機能が追加されました。

このアナウンスは、3つの重要な AWS のベストプラクティスのもとに作られました。

  1. 定期的にEBS ボリュームのバックアップを取得する
  2. 環境(開発、テスト、ステージング、本番)毎にアカウントを作成し、複数アカウントを利用する
  3. バックアップを含めた、データ(保管時のデータ)の暗号化を行う

暗号化された EBS ボリュームとスナップショット

では、実際にこの機能を利用してみたいと思います。まずは、振り返りの意味もこめて、IAM コンソールを使って、暗号化キーを作成します。

 

そして、暗号化キーを指定し(他のアカウントにコピーを行う場合、カスタムキーを利用する必要があります)、暗号化された EBS ボリュームを作成します。

続けて、暗号化された EBS スナップショットをボリュームから作成できます。

 

今ご覧いただいたように、私は既に長いボリュームIDとスナップショットID を私のAWS アカウントで有効にしています(こちらに関しての詳細は、They’re Here – Longer EBS and Storage Gateway Resource IDs Now Available をご確認ください)。

クロスアカウントコピー

今までご覧いただいたことに、何も新しいものはありませんでした。では、新しい部分に入っていきましょう!他のアカウントに暗号化された EBS スナップショットのコピーを作成するには、下記の4つのシンプルなステップを実施する必要があります:

  1. スナップショットに関連づけられたカスタムキーを共有先アカウントと共有する
  2. 暗号化された EBS スナップショットを相手先アカウントと共有する
  3. 共有先アカウントで、スナップショットのコピーを作成する
  4. 新しいボリュームを作成するために作成したコピーを利用する

上記の最初の2ステップを実施するには、共有先アカウント番号が必要です。ここから、IAM コンソールを通じて、どのように共有先アカウントにカスタムキーを共有するかを記していきます:

そして、暗号化された EBS スナップショットを共有します。共有するスナップショットを選択し、Modify Permissions(権限の変更)をクリックします。

共有先のアカウント番号を入力し、Save(保存)をクリックします。

 

 

暗号化されたスナップショットを一般公開することは出来ないので、ご注意ください。

次のステップに移る前に、少し権限について補足させてください!下記に、ポリシーやロールを設定するために知っておくべきことを記しました:

Source Account(スナップショットの共有元アカウント) – 共有元アカウントのIAM ユーザー、ロールは、 ModifySnapshotAttribute 関数を呼び出すことが出来る必要があり、オリジナルのスナップショットに関連づけられる鍵に対して、 DescribeKeyReEncypt 操作を実行できる必要があります。

Target Account(スナップショットの共有先アカウント) –共有先アカウントのIAM ユーザー、ロールは、オリジナルのスナップショットに関連づけられる鍵に対して、DescribeKey, CreateGrant, Decrypt の操作を実行できる必要があります。加えて、CopySnapshot の呼び出しに関連づけられた鍵に対して、CreateGrant, Encrypt, Decrypt, DescribeKeyGenerateDataKeyWithoutPlaintext 操作を実行できる必要があります。

では話を戻して、スナップショットのコピーを行いましょう。

共有先アカウントに切替え、 Snapshots(スナップショット) タブを表示し、Private Snapshots(プライベートスナップショット) をクリックします。スナップショット ID (スナップショット名はタグとして保存されますが、コピーされません)経由で、共有されたスナップショットを確認し、チェックボックスで選択し、Action(アクション) から Copy(コピー) をクリックします:

 

コピーされるスナップショットに使用する暗号化キーを選択します(ここでは、アジアパシフィック(東京)リージョンにスナップショットをコピーします)。

コピーに対して新しい鍵を利用することで、2つのアカウント間での分離レベルが高くなります。コピー操作中に、新しい鍵を使ってデータは再暗号化されます。

今すぐご利用可能です

この機能は AWS Key Management Service (KMS)が利用可能な全リージョンで利用可能です。データボリューム、ルートボリュームで利用できるように設計され、全てのボリュームタイプで利用可能ですが、現時点では暗号化されたAMIを共有するために利用することは出来ません。スナップショットをコピーし、新しいイメージとして登録することで、スナップショットを利用して、暗号化されたブートボリュームを作成できます。

— Jeff; (翻訳は江川が担当しました。原文はこちら)

 

 

【AWS発表】新機能:Service Last Accessed Dataからのより詳細な情報取得

昨年末にAWS Identity and Access Management (IAM) で、IAMエンティティ(ユーザー、グループ、ロール)がAWSサービスに最後にアクセスした時刻を表示する機能としてService Last Accessed Dataをリリースしました。この機能は、最小限の権限付与に大きく役立つツールです。

本日、Service Last Accessed Dataの情報が追加され、どの権限を削除できるかをより簡単に識別することができるようになりました。

今回のリリースで、IAMエンティティとポリシーについて次のような情報にアクセスできます:

  • マネージドポリシーやグループに関連付けられている全てのIAMユーザーおよびロールのLast Accessed Data
  • あるIAMユーザー、ロール、グループに対して、サービスの権限を与えている全てのポリシー

これらの追加された詳細データによってアクセスパターンやポリシー構成がより理解しやすくなります。結果として、より良い情報を元に権限管理の決断をくだせます。

この記事では、新しいより詳細なService Last Accessed Dataをウォークスルーし、どのように権限管理をより効果的に行うかについて説明します。

 

マネージドポリシーあるいはグループに関連付けられた全てのIAMユーザーおよびロールの最終アクセス履歴を参照する

 

あなたが、ユーザーやアプリケーションのセキュリティを管理する責任をもつIAMの管理者だと想像して下さい。全ての権限が必要ないIAMユーザーやロールに対して、ポリシーが広すぎる形で適用されていないかどうかを知りたいと思うことでしょう。これまでは、マネージドポリシーのアクセスアドバイザータブでは、サービスがいつ最後にアクセスされたかが表示されていましたが、どのユーザーあるいはロールが最後にアクセスしたのかを特定するためには、AWS CloudTrailのログをサーチする必要がありました。今回の機能によって、次のスナップショットに示すように、エンティティによるアクセス列のリンクをクリックすることにより、どのユーザーあるいはロールがそのサービスに最後にアクセスしたかだけではなく、そのサービスに関連付けられた全てのユーザーやロールがいつ最後にアクセスしたのかをすぐに見ることが出来るようになりました。

 

例えば、次のスクリーンショットは、あるマネージドポリシーで付与されているAmazon EC2の権限についての情報を表示しています。見ての通り、ポリシーをアタッチされている全てのユーザーやロールが実際にEC2にアクセスしているわけではありません。つまり、このユーザーやロールのうちの幾つかは、剥奪可能な過大な権限を持っていることを示しています。

 

あるユーザー、ロール、グループに対してサービスの権限を付与している全てのポリシーを参照する

 

さきほどと同じように、あなたが最小権限の原則を適用しようとしているIAM管理者であることを想像してください。あるユーザーやロールに対するService Last Accessed Dataを参照した後に、ユーザーやロールから必要ないポリシーを削除したりデタッチしたりしたいと思うかもしれません。この手助けとして、ユーザーのアクセスアドバイザータブで、どこで権限が付与されているかをクイックに見るために、ポリシーのアクセス権限内のサービス権限のリンクをクリックして下さい。そうすれば、AWS管理ポリシーやIAMグループから継承されたポリシーが表示されます。ダイアログボックスの中でポリシーの名前をクリックすることでそのポリシーを参照でき、簡単に変更を行うことが出来ます。

 

次のスクリーンショットは、あるIAMユーザーに付与されているEC2に対する権限のソースを示しています。見ての通り、複数のマネージドおよびインラインポリシーが定義されていて、幾つかのポリシーをクリーンナップあるいは統合する事が適切であるということを示唆しています。

 

Service Last Accessed Dataをより詳細に参照できる機能によって、権限管理がより容易になります。より詳細化されたService Last Accessed Dataについてコメントがある方は、下記のコメント欄にお願いします。ご質問のある方は、IAMフォーラムへの投稿をお願い致します。

– Zaher (翻訳はSA布目が担当しました。原文はこちら)

セキュリティ脆弱性診断サービスであるAmazon Inspectorの一般利用開始

我々は、Amazon Inspectorがプレビューを経て全てのお客様に一般利用可能となったお知らせが出来ることを嬉しく思います。
Amazon Inspectorは、セキュリティ脆弱性診断サービスです。これは、Amazon EC2上で稼働するお客様のアプリケーションのセキュリティやコンプライアンス適合の改善を支援します。Amazon Inspector は、自動的にアプリケーションを評価し、脆弱性やベストプラクティスからの逸脱がないかどうかを確認し、重大性の順に結果を表示した詳細なリストを作成します。Amazon Inspector には、共通のセキュリティベストプラクティスや脆弱性の定義に対応した何百ものルールが収められたナレッジベースが備えられており、それらはAWS のセキュリティ研究者によって定期的に更新されます。
Amazon Inspectorは前払いの投資も必要ありませんし、追加的なソフトウェアライセンスや保守費用、専用のハードウェアも必要ありません。
お客様はご利用分のみの支払であり、それは柔軟なユースケース、たとえば継続的デプロイメントやオートスケールなどへの対応(それらはホスト毎やIP毎の支払モデルでは難しいものでしょう)を提供します。
Amazon Inspectorは、90日の無償利用を含みます。
ぜひともより詳細な情報を得るためにAmazon Inspectorの製品詳細ページをご覧になってください。

 

原文はこちら。日本語訳は市崎が担当しました。