Amazon Web Services ブログ

Category: Amazon Cognito

Amazon API Gateway で API キーを使わずに認証とアクセス制御を行う

はじめに Amazon API Gateway の API キーの利用を検討したものの、API キーの制約によってプロダクトの要件を満たせないことがあります。その際、それぞれ Amazon Cognito を利用した認証と AWS WAF を用いた IP ベースのレート制限を利用するという代替案をご紹介いたします。 背景 筆者は普段、プロトタイピングソリューションアーキテクトとして、お客様のプロダクトのプロトタイプ作りをお手伝いさせていただいております。お客様の中には、ユーザー認証やアクセス制御として Amazon API Gateway の API キーの利用を検討している場合があります。しかし、API キーでお客様の要件を満たせるかどうかは、慎重に検討が必要です。 API キーには数の上限があります。Amazon API Gateway のクォータと重要な注意点 にも記載がある通り、1 アカウント、1 リージョンあたりの API キー数の上限は 500 です。そのため、多くのユーザーを抱える API では API キーによる認証は適さないと言えます。 API キーのセキュリティについても検討が必要です。API キーは有効期限が設定できないので、有効期限を設定可能な認証方法に比べ、漏洩した際のリスクが大きいです。 このように、 API キーは容易に利用が可能な反面、いくつかの考慮事項があるため、選定は慎重に行う必要があります。次の考察で、認証とアクセス制限について、それぞれ代替案をご紹介したいと思います。 考察 では、ユースケース別に代替案をご紹介いたします。 一つ目は、認証として API キーを利用したいケースです。それぞれのユーザーに対し、ユニークな API キーを割り当てることを想定しています。この場合、背景にて説明した API […]

Read More

[AWS Black Belt Online Seminar] Amazon Cognito 資料及び QA 公開

先日 (2020/06/30) 開催しました AWS Black Belt Online Seminar「Amazon Cognito」の資料を公開しました。当日、参加者の皆様から頂いた QA の一部についても共有しております。 20200630 AWS Black Belt Online Seminar Amazon Cognito from Amazon Web Services Japan AWS クラウドサービス活用資料集(すべての過去資料が閲覧できます) Q. ユーザープール、Cognito ID プールはどこに保存されるのでしょうか?例えば貴社でご用意する Cognito 用インスタンスのローカル等に保存されるイメージでしょうか? A. お客様が指定された AWS リージョン内の Amazon Cognito 環境内に保存されます。 Q. ユーザープールに登録した情報(usename、password、email, tel)のバックアップとリストアは、どのように行えばよいですか? A. Cognito ユーザプールはバックアップやリストアの機能は提供していませんが、ユーザプールに登録された情報は、安全に保存されています。そのため、単一リージョン内での耐久性では不十分な場合や操作ミスからの復旧が、バックアップやリストアの目的になるかと思われます。 前者への対応としては、定期的に全ユーザの属性を読み取って S3 や DB 等に保存しておく、あるいはユーザの新規・変更時に都度 DB にも記録する、ログイン時に発行される ID トークンの内容を都度 DB […]

Read More

【開催報告】ビルシリーズ@住友不動産六本木グランドタワー 第1回

みなさんこんにちは!アマゾンウェブサービスジャパン株式会社 ソリューションアーキテクトの木村公哉です。 11月21日に「ビルシリーズ@六本木一丁目住友不動産六本木グランドタワー 第1回」を開催いたしました。今回は「初めてのサーバレスWebアプリケーションハンズオン」を実施しました。こちら「ビルシリーズとは?」とお思いの方も多いかと思いますので、開催報告と合わせてご説明いたします。 「ビルシリーズ」とは? このイベントは、日頃AWSをご利用いただいているお客様に、AWSからの情報発信はもちろん、同じビルに拠点を構えるお客様同士の活発な意見交換と交流の場を定期的に作ることを目的としたものです(同じビルなので移動が楽!)。 今回、住友不動産六本木グランドタワーのFringe81様、BASE様、エブリー様、ディップ様で同じようなニーズがあり、このようなビル単位でのイベントを開催する運びとなりました。場所はFringe81様の素敵な大会場をお借りいたしました。Fringe81様ありがとうございました。 来月には住友不動産麻布十番ビルでも開催を予定しており、今後もこのようなビル単位で交流ができるようなイベントを開催していきたいと考えております。 当日の様子 当日は約40人のお客様にお越しいただき、イベントは終始盛り上がりを見せておりました。   まずはAWSJ 植本より、今回のビルシリーズの趣旨などを説明いたしました。   次に、AWSJ 木村より「サーバレスのご紹介 – ユースケースパターンを切り口に」というタイトルで、AWSのサーバレスプラットフォームについてご紹介いたしました。   続けてAWSJ 木村より「初めてのWebアプリケーションハンズオン」を実施いたしました。   ハンズオンの終了後、ご参加いただいた皆様と共に、簡単な懇親会を開催いたしました。   今回、AWSJより、アカウントマネージャー植本、藤田、細木、ソリューションアーキテクト上原、石見、小宮、木村がビルシリーズをサポートいたしました。こちらはソリューションアーキテクトの集合写真です。 貴社担当のアカウントマネージャから「ビルシリーズ」のお誘いがあるかもしれませんが、是非ご検討いただければと思います。それでは、次回のビルシリーズでお会いしましょう!   著者について 木村 公哉(Kimura, Koya) 香川県出身のソリューションアーキテクトです。好きなサービスはAWS AmplifyとAWS Lambda、Amazon Kinesisです。好きな食べ物はうどんです。   上原 誠(Uehara, Makoto) アマゾンウェブサービスジャパン株式会社のソリューションアーキテクトとして、主にメディア系のお客様に対する技術支援を担当。技術的な得意/興味領域としては、アナリティクス系テクノロジー、広告系ソリューションなど。

Read More

Amazon Cognito ユーザープールが SAML フェデレーションをサポート [パブリックベータ]

昨年、Amazon Cognito Identity に SAML フェデレーションのサポートを追加しました。この機能は SAML レスポンスから一時的な AWS クレデンシャル情報を取得できます。 Amazon Cognito Identity は API ベースのアプローチをサポートしており、AWS クレデンシャル情報を取得するためには、SAML IdP (Identity Provider) の SAML 応答を解析し、Amazon Cognito Identity API をコールします。 Amazon Cognito ユーザープールは、あなたのモバイルおよび Web アプリに、セキュアでスケーラブルなユーザーディレクトリを使用したサインアップおよびサインイン機能を追加します。本日、Amazon Cognito ユーザープールの SAML IdP (Identity Provider) フェデレーションをアナウンスできることを嬉しく思います。本機能はユーザーディレクトリに SAML IdP のユーザーをマッピングし、 SAML IdP でユーザーを認証後にユーザープールから標準認証トークンを取得します。ユーザープールは SAML 2.0 POST Binding エンドポイントをサポートします。これにより、クライアントは SAML アサーションレスポンスの解析が不要になり、ユーザープールはユーザーエージェント (訳注: Web ブラウザ等) […]

Read More

サーバレス 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 […]

Read More

新機能 – Amazon Cognito グループ、およびきめ細かなロールベースのアクセス制御

アプリケーションの構築における課題の 1 つは、ユーザー認証と管理に関する事柄です。この課題に直面しても、多くの開発者はアプリケーション用の別のユーザー ID と認証システムを構築したいとは考えていませんし、必要な場合を除いてユーザーにさらに別のアカウントを作成させたいとも思っていません。Amazon Cognito では、アプリケーションのデータとバックエンドシステムにアクセスするために、開発者がユーザーの ID、認証、および権限を簡単に管理できるようになっています。それに加えて、開発者がアプリケーションの異なるユーザーに異なる権限を割り当てるのを簡単にするサービス機能があればどんなによいでしょう。本日、Cognito ユーザープールがグループをサポートし、Cognito フェデレーション識別がきめ細かなロールベースのアクセス制御 (RBAC) をサポートするようになったことが発表されました。Cognito でのグループのサポートにより、開発者は異なるユーザータイプとアプリケーションの使用権限を表すグループを作成して、ユーザーのアプリケーションエクスペリエンスを簡単にカスタマイズできます。開発者は、グループからのユーザーの追加や削除、およびユーザーのセットに対してグループで権限を管理できます。権限に関しては、Cognito フェデレーション識別でのきめ細かなロールベースのアクセス制御 (RBAC) のサポートにより、開発者は異なる認証をされたユーザーに異なる IAM ロールを割り当てられます。これまで、Amazon Cognito ではすべての認証されたユーザーに対して 1 つの IAM ロールのみをサポートしていました。きめ細かな RBAC を使用すると、開発者はフェデレーティッドユーザーに異なる IAM ロールをマッピングすることができます。この機能は Facebook や Active Directory などの既存の ID プロバイダーと Cognito ユーザープールを使用したユーザー認証の両方で利用できます。 Cognito ユーザープールのグループ 新しい Cognito のグループの機能について調べる最善の方法は、Amazon Cognito コンソールで新しいグループを作成して、さまざまなグループタイプにユーザーを追加してみることです。   [my user pool]、[TestAppPool] を選択すると、[Users and groups] という更新されたメニュー項目があります。メニューオプションを選択すると、パネルに [Users] と [groups] […]

Read More

Amazon Cognito Your User Pools - 一般提供を開始

数か月前公開したブログ Amazon Cognito の新しい Your User Pools 機能についてご紹介しました。その時点では、ユーザーのモバイルアプリやウェブアプリでサインアップやサインインに同機能を使用することをご説明しました。完全マネージド型のユーザーディレクトリでは、ユーザー数億人の拡大を可能にしたり、各 AWS アカウントで複数のディレクトリを使用することができます。ユーザープールは数分で作成でき、新規ユーザーがお客様のアプリまたはサービスにサインアップする時に、どの属性 (アドレス、メール、性別、電話番号やカスタム属性など) に入力の必要があるか指定することができます。セキュリティの面では、お好みに合わせたパスワード強度を特定したり、Multi-Factor Authentication (MFA) の使用の強制やユーザーの電話番号またはメールアドレスでの確認を求めることができます。 一般提供を開始 Your User Pools のパブリックベータ版を開始したところ、数多くの素晴らしいフィードバックをいただきました。そして本日、Your User Pools の一般公開を開始した他、このリリースに伴い、いくつかの新機能も追加しました。 Device Remembering – Cognito は各ユーザーがどのデバイスからサインインしたか記憶することができます。 User Search – 属性に基づきユーザープールでユーザーを検索できます。 Customizable Email Addresses – ユーザープール内でユーザーのメールアドレスを管理できます。 Attribute Permissions – 各ユーザーの属性を細かく設定することができます。 Custom Authentication Flow – 新たな API や Lambda トリガーを使用してサインインフローをカスタマイズできます。 Admin Sign-in – バックエンドサーバーや Lambda […]

Read More

[New] Amazon Cognito 向け User Pools

Amazon Cognito を使うことでバックエンドコードを書いたり、インフラストラクチャの管理をする必要なくモバイルや Web アプリに簡単に認証やユーザ管理とデータ同期を簡単に追加できます。ユーザごとの設定やアプリケーションの状態データをバックエンドコードを書いたり、インフラストラクチャの管理をする必要なく AWS Cloud に保存することが簡単になります。昨年、AWS CloudTrail サポートやログインプロバイダとして Twitter および Digits の使用、Cognito におけるイベントに応答するAWS Lambda function の実行機能、そして Amazon Kinesis へのユーザアイデンティティデータのストリーミングといったいくつかのパワフルな新機能を Cognito に追加しました。 User Pools モバイルと Web アプリに簡単にユーザサインアップとサインインを追加するのに Amazon Cognito を利用できるようになりました。User Pool の機能を用いて、数億ユーザまでスケールし、フルマネージドなので構築したり、セキュアにしたりアプリに対する認証をスケールしたりするのに関連する重労働について心配することなく独自のユーザディレクトリを作成できます。この機能は email による確認、電話番号による確認や多要素認証といった拡張されたセキュリティ機能も提供します。アプリ開発者として、みなさんはこういった目的のために、Federated Identity Pools と呼ぶようになった Cognito の機能を利用して、Amazon、Facebook、Google、Twitter もしくは Digits といった外部のアイデンティティプロバイダを利用するというオプションを既に持っていました。User Pool を使うことで Web とモバイルの SaaS アプリ、ゲームなどといった面でサインアップとサインインに詳細なコントロールが可能になります。あらゆるスケール(潜在的には数十や数億のユーザ)でディレクトリサービスを構築し稼働させることは簡単ではなく、ユーザ名、パスワード、email アドレスやその他のセンシティブな情報のかけらを管理するときに追加されるセキュリティの重荷とともに全くもって付加価値を生まない重労働です。User Pool を使う場合、独自のディレクトリサービスを構築し、稼働させる必要はありません。 アカウントごとの複数のUser Pool 自分の […]

Read More