SORACOM Developers

Getting Started

KryptonでCognitoのクレデンシャルを取得し、S3からファイルをダウンロードする

当ガイドでは、SIM 認証を使用して SORACOM Krypton(以下、Krypton)の Amazon Cognito 向けサービスのクレデンシャルを取得し、S3からファイルをダウンロードします。

はじめに

Krypton は SORACOM が発行する SIM と SORACOM のセルラーコアネットワーク上の SIM 認証基盤を使用し、セキュア・プロビジョニングを提供するサービスです。

Krypton の Amazon Cognito 向けプロビジョニング API では、 Amazon Cognito 開発者ガイド内にある「開発者が認証した ID の認証フロー」の「拡張認証フロー」をサポートしています。

Krypton は SIM を使用したデバイスを認証し、Amazon Cognito のGetOpenIdTokenForDeveloperIdentity API を呼び出し、OpenIDトークンを受け取ります。

さらに GetCredentialsForIdentity を呼び出して一時的なAWSクレデンシャルを受け取ることができます。

当サービスを利用することで、お客様は、デバイスの製造段階で認証情報を埋め込むことなく、デバイスからAWSの任意のサービスのAPIに対してAWS SDKを用いたアクセスが可能となります。その際の通信はセルラー回線である必要はないことから、コストの低いWiFiやEthernet等を主回線として用いながら、セルラーをバックアップに使うといった使い方も可能となります。

当ガイドのステップは以下のとおりです。

前提事項は以下のとおりです。

ステップ1: Amazon CognitoのユーザーIDプールを作成し、開発者が認証したIDを使用するように構成する

Amazon Cognito の管理コンソールにアクセスします。

Krypton-Cognito

「IDプールの管理」をクリックします。

Krypton-Cognito

「新しいIDプールの作成」をクリックします。

Krypton-Cognito

IDプール名を入力します。次に認証プロバイダーを開き、「カスタム」から「開発者プロバイダーの名前」に krypton.soracom.io を入力して、「プールの作成」をクリックします。

Krypton-Cognito

プール内の認証済みユーザーに対して作成されたIAMロールを指定します。 画面に表示されたポリシー文書がクライアントに割り当てられます。 ここで適切に編集するか、ロールに割り当てられたポリシー文書を後で編集することもできます。

IDプールのIDをコピーして保存します。これは、SORACOM Krypton構成で使用します。

Krypton-Cognito

ステップ2: 認証されたクライアントにOpenIDトークンを提供する権限を持つAWS IAM資格情報を作成する

Krypton がAmazon Cognito IDプールにアクセスして資格情報を生成するには、適切な権限セットを持つAWS資格情報が必要です。 このセクションでは、AWS IAMユーザーを作成し、適切なポリシーセットを添付し、一連のAWS資格情報を取得する手順について記載します。

AWSのIAM管理コンソールにアクセスします。

Krypton-Cognito

左のメニューからユーザーメニューから、ユーザーの追加をクリックします。

Krypton-Cognito

ユーザー名を指定し、「プログラムによるアクセス」をチェックします。 「次のステップ:アクセス権限」をクリックします。

Krypton-Cognito

「既存のポリシーを直接アタッチ」を選択して、ポリシー「AmazonCognitoDeveloperAuthenticatedIdentities」をアタッチします。

Krypton-Cognito

設定を確認し、 「ユーザーの作成」をクリックしてください。

Krypton-Cognito

AWS access key ID と secret access key をコピーしてください。 (secret access key はこの時点で一度だけ表示されます。後ほど使用しますので保管してださい)。

Krypton-Cognito

ステップ3: Kryptonを設定する

ここまで、Kryptonを設定するために必要な情報を収集しました。 次に、SIMがAmazon Cognitoの情報をプロビジョニングするために使用できるように、設定グループを設定します。SORACOM クレデンシャルストアにAWS IAM資格情報エントリを作成します。

SORACOM資格情報ストアにAWS資格情報を登録する

ソラコムのユーザーコンソールからセキュリティを選択します。

Krypton-Cognito

SORACOM クレデンシャル情報ストアにAWS資格情報を登録します。

Krypton-Cognito

認証情報セットに名前を付け、タイプとして 「AWS credentials」を選択し、「ステップ2」で作成したAWS認証情報をコピーして貼り付けます

Krypton-Cognito

SIMグループを作成し、SIMをグループに所属させます。

SORACOMユーザーコンソールからSIMグループを選択します。

Krypton-Cognito

「追加」ボタンをクリックして新規にグループを作成します(または既存のグループを使用する場合はグループを選択します)

グループをクリックし、グループ設定ビューに移動します。

Krypton-Cognito

Krypton を ON にして Cognito の情報を設定します。 「ステップ1」「ステップ2」で設定した内容をもとに以下のようにグループを設定します

"region": "ap-northeast-1",
"credentialsId": "aws-xxx-krypton",
"identityPoolId": "ap-northeast-1:xxxxxxxxx",
"developerProviderName": "krypton.soracom.io"

保存ボタンをクリックします。

Krypton-Cognito

次に SIM 管理メニューを選択します。

Krypton-Cognito

使用するSIMを選択し、 Actions メニューの Change group をクリックしてください

Krypton-Cognito

SIMグループを選択し、 Update をクリックしてください。

Krypton-Cognito

ステップ4: 一時的なAWS資格情報を取得し、AWSリソースにアクセスする

ここまでで Krypton を使用して Cognito から AWS 認証情報を取得する設定が完了しました。 SIM を使用して認証し、一時的な AWS 資格を取得するサンプルスクリプトを実行します。 有効期限が切れる前に定期的に資格情報を更新します。

サンプルプロジェクト(nodejs) をダウンロードして解凍してください。 このサンプルプロジェクトを実行するためには以下のソフトウェアが必要となります。必要に応じてインストールしてください。

解凍後に作成されたフォルダ「kryptonExamples」内に移動して、必要なnodeモジュールをインストールするため以下のコマンドを実行してください。

$ npm install

次にKryptonの認証方法に応じたセットアップを行います。

SORACOM Air のセルラー回線を使用した認証

SORACOM Air のセルラー回線を使用した認証を用いる場合は以下のコマンドを実行してください。

$ ln -sf krypton-cognito-cellular krypton-cognito

SORACOM Endorse による SIM 認証

SORACOM Endorse による SIM 認証を用いる場合はまず以下の前提条件をご確認ください。

問題なければ CLI ツールをダウンロードします。現在 Java 版と Go 言語版の2種類の CLI ツールがあります。Java 版の CLI ツールは Java で実装されているためポータビリティがありますが実行には Java のランタイム環境が必要となります。一方で Go 言語版の CLI ツールはビルド済みの実行可能ファイルをお使いの環境にコピーしていただければご利用いただけます。お使いのデバイス、環境に合わせて使い分けてください。

Java 版の CLI ツールの場合は、 soracom-krypton-client-for-javaより soracom-krypton.jar を「kryptonExamples」と同じフォルダ内にダウンロードしてください。 その後「kryptonExamples」内に移動し以下のコマンドを実行してください。

$ ln -sf krypton-cognito-endorse-java krypton-cognito

Go 言語版の CLI ツールの場合は、krypton-client-goよりお使いの環境にあったバイナリファイルを「kryptonExamples」と同じフォルダ内にダウンロードしてください。 その後「kryptonExamples」内に移動し以下のコマンドを実行してください。

$ ln -sf krypton-cognito-endorse-go krypton-cognito

以上で認証方法に応じたセットアップは完了です。

AWS資格情報を取得し、AWSリソースにアクセスする

SORACOM Air のセルラー回線を使用した認証の場合は、Air SIMで接続できていることを確認してください。

Run node cognito-auth.js を実行します。

$ node cognito-auth.js

「Successfully obtained AWS credentials」というメッセージが表示された場合は、SORACOM Krypton を使用してデバイスの認証が正常にできています。これで、Amazon CognitoコンソールのアイデンティティプールのアイデンティティブラウザのIMSIを見ることができます。

Krypton-Cognito

S3へのアクセス

ここまでで、サンプルスクリプトを変更して、Amazon S3バケットやKinesis Video StreamなどのAWSリソースにアクセスできるようになりました。

S3へのアクセスを行うには、スクリプト「cognito-auth.js」を開いて次の部分を編集します。以下はS3の指定のバケットのオブジェクトをリストします。

initializeCredentials().then(() => {
  console.log("Successfully obtained AWS credentials");
  /* Here write code to access AWS resources, e.g.
    const s3 = new AWS.S3();

    s3.listObjects({Bucket: 'your-s3-bucket'}, (err, data) => {
      if (err) console.error(err);
      console.log(data);
    });
  */
});

認証されたユーザーに関連付けられたAWS IAMロールを合わせて設定する必要があります。

Getting Started

SORACOM Air for セルラー

SORACOM Air for LoRaWAN

SORACOM Air for Sigfox

SORACOM Beam

SORACOM Canal/Direct/Door

SORACOM Endorse

SORACOM Funnel

SORACOM Gate

SORACOM Harvest

SORACOM Inventory

SORACOM Junction

SORACOM Krypton

SORACOM Lagoon

サービス機能詳細

Developer Tools

pagetop