カテゴリー
2022年 AWS AWS Solutions Architect - Associate クラウド コンピューター 技術一般 認定資格

AWSを学ぶ(25)VPCエンドポイントを理解しよう

PVアクセスランキング にほんブログ村 にほんブログ村 ブログブログへ
にほんブログ村

例えば、S3 や DynamoDB などといったサービスは、インターネットから直接利用できる、VPC 外の AWS サービスとなります。

これらへのアクセスは、VPC 内の AWS リソースからインターネットゲートウェイを経由して通信します。つまり、通信がインターネットに一度出ます。

セキュリティーを考えると、インターネットには出したくないというケースもあるでしょう。そこで VPC エンドポイントです。

VPC エンドポイントとは

VPC エンドポイントは、セキュリティ上の制約でインターネットとの通信が制限されているプライベートサブネット内の AWS リソースから、インターネットゲートウェイを経由せずに、VPC 外の AWS サービスへアクセス可能にする機能です。

VPC エンドポイントの種類と特徴

VPC エンドポイントには 3種類があり、それぞれ利用できるAWS サービスが異なります。

1. ゲートウェイエンドポイント(ゲートウェイ型)

ゲートウェイエンドポイントは、Amazon S3 または DynamoDB のみ対応しています。

S3 や DynamoDB へ接続したいリソースが配置されている VPC に VPC エンドポイントを割り当て、ルートテーブルにターゲットが VPC エンドポイントのルーティングを設定します。

ゲートウェイエンドポイントを使って S3 や DynamoDB にアクセスする時のイメージ

DynamoDB はゲートウェイ型のみ利用できますが、S3 はゲートウェイ型と PrivateLink の両方で利用可能です。

ゲートウェイエンドポイントは料金なしで使用できます。

2. インターフェイスエンドポイントAWS PrivateLink(インターフェイス型))

インターフェイスエンドポイントは AWS PrivateLink を使用し、サービスを送信先とするトラフィックのためのポイントとして Elastic Network Interface (ENI) を使用します。

サービスへ接続したいリソースが配置されているサブネットにプライベートIPアドレスを持つENIを作成し、ENIとサービスをリンクさせます。

AWS PrivateLink を使って CloudWatch や S3 にアクセスする時のイメージ

数多くの AWS サービスに対応しています。

AWS PrivateLinkと統合できる AWS のサービス

プライベート IP アドレスを使用して、VPC 内、オンプレミス、または VPC ピアリングや AWS リージョン を使用する別の AWS Transit Gateway にある VPC から Amazon S3 にリクエストをルーティングすることにより、ゲートウェイエンドポイントの機能を拡張します。

時間単位の使用料金とデータ処理料金が課金されます。

ゲートウェイ型とインターフェース型の比較

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#types-of-vpc-endpoints-for-s3

3. Gateway Load Balancer エンドポイント

ゲートウェイロードバランサーのエンドポイントは AWS PrivateLink を使用し、サービスを送信先とするトラフィックのためのポイントとして Elastic Network Interface (ENI) を使用します。

時間単位の使用料金とデータ処理料金が課金されます。

VPC エンドポイントポリシー

エンドポイントの作成時、または変更時にエンドポイントにアタッチする IAM リソースポリシーのことです。

注意点は、以下の通りです

  • エンドポイントの作成時にポリシーを適用しない場合、サービスへのフルアクセスを許可するデフォルトのポリシーが適用
  • サービスがエンドポイントポリシーをサポートしていない場合、エンドポイントはサービスへのフルアクセスを許可

エンドポイントポリシーは、IAM ユーザーポリシーやサービス固有のポリシー (S3 バケットポリシーなど) を上書き、または置き換えません。これは、エンドポイントから、指定されたサービスへのアクセスを制御するための別のポリシーであるためです。

また、1つのエンドポイントに複数のポリシーを関連付けることはできません。

ポリシーはいつでも変更可能です。

おもしろかったら、フォローしてください!

世の中には楽しいことがいっぱい - にほんブログ村

最近の人気ブログ TOP 10:

関連する記事:

最近の記事:

カテゴリー
2021年 AWS AWS Solutions Architect - Associate Azure Microsoft MS Azure Administrator MS Azure Fundamentals クラウド コンピューター 技術一般 認定資格

MS Azure を学ぶ (0) 用語比較

にほんブログ村 ブログブログへ
にほんブログ村

用語比較

並べて比較してみると、やはり分かりやすいです。

Azure の言葉も何となくは知っていたのですが、これではっきりしました。

AWS 用語Azure 用語
EC2 (Elastic Compute Cloud)Virtual Machines
仮想サーバーにより、OS やサーバー ソフトウェアをデプロイしたり、管理や保守が行える。
AWS 用語Azure 用語
Auto ScalingVirtual Machine Scale Sets
負荷を見て、VM インスタンスの数を自動的に変更する。
AWS 用語Azure 用語
VPC (Virtual Private Cloud)VNET (Virtual Network)
クラウド内の分離されたプライベート環境のこと。 ユーザーは、独自の IP アドレス範囲の選択、サブネットの作成したりして、自分の仮想ネットワーク環境を制御できる。
AWS 用語Azure 用語
NAT GatewaysVirtual Network NAT
仮想ネットワークでアウトバウンド専用のインターネット接続が簡単になるサービス。プライベートサブネットで外部ネットワークと通信する際に使用する。
AWS 用語Azure 用語
VPN GatewayVPN Gateway
仮想ネットワークを他の仮想ネットワーク、または顧客のオンプレミス ネットワークに接続 (サイト間) できる。
AWS 用語Azure 用語
Route 53DNS
サービスで提供される DNS。これにより、各 DNS レコードを管理する。
AWS 用語Azure 用語
Direct ConnectExpress Route
ある場所からクラウド プロバイダーへの (インターネット経由ではなく) 専用のプライベート ネットワーク接続を確立する。
AWS 用語Azure 用語
ALB (Application Load Balancer)Application Gateway
レイヤー 7 のロード バランサー。 SSL ターミネーションやラウンド ロビンによるトラフィックの負荷分散をサポートする。
AWS 用語Azure 用語
NLB (Network Load Balancer)Load Balancer
レイヤー 4 (TCP または UDP) でトラフィックを負荷分散する。
AWS 用語Azure 用語
CloudFrontAzure CDN
クラウドプロバイダーで提供される CDN サービス
AWS 用語Azure 用語
Certification Managerポータルで使用可能な App Service 証明書
クラウド内で証明書をシームレスに作成、管理できるようにするサービス。
AWS 用語Azure 用語
S3 (Simple Storage Services)Blob Storage
バックアップ、アーカイブ、ディザスター リカバリーなど向けのオブジェクト ストレージ サービス。
AWS 用語Azure 用語
EBS (Elastic Block Storage)マネージドディスク
I/O 集中型読み取り/書き込み操作用に最適化された SSD ストレージ。
AWS 用語Azure 用語
S3 GlacierStorage アーカイブアクセス層
ストレージ コストが最も低くいアーカイブ ストレージ。

Azure Administrator (AZ-104)の教材

私がAZ-104に合格するまでに使った教材を紹介します。

合格対策Microsoft認定試験AZ-104:Microsoft Azure Administratorテキスト&演習問題

posted with カエレバ

Azure をあまり触ったことのない人は、これから始めるのが良いかと思います。

内容は分かりやすく、全分野をカバーはしています。ただ、深いところまでは説明がなく、これだけで合格は厳しいと思います。

(模擬試験付き)徹底攻略 Microsoft Azure Administrator 教科書 [AZ-104] 対応

posted with カエレバ

この教材が一番良いのではと思います。試験内容をカバーしているのは当然ですが、説明もしっかりしています。

ただ、この教材に付いている模擬問題は、本番の内容に比べると簡単なので、この問題を解ければ合格とは思わない方がいいです。

試験前の力試しには、やはりUdemyの問題が良いです。

私は以下の2つを使いましたが、本番を想定した内容となっており、しかも、いくつかはほぼ同じ内容の問題も出ていました。

AZ-104: Microsoft Azure Administrator 模擬試験問題集

AZ-104: Microsoft Azure Administrator 2022年 模擬試験問題集

関連する記事:

最近の記事:

カテゴリー
2021年 AWS Azure クラウド コンピューター トラブルシューティング 技術一般 証明書

パケットキャプチャーからサーバー証明書を抜き出す方法

Webサーバー向けのテストをしていると、代理証明書が必要となるケースが多いです。特に、インターネット上にあるサーバーに対しての通信テストとなると、それらのサーバー署名書をまず手に入れ、その内容を元に、代理証明書を作成する必要があります。

インターネット上にあるサーバーの証明書ですが、実は簡単に内容を取得することができます。パケットキャプチャ(TCP ダンプ)を取得するのです。

パケットキャプチャには、通信の全てが含まれています。当然、サーバー証明書も含まれます。このやり取りの証明書の部分を指定して、証明書だけを抜き出せば良いのです。

サーバ証明書の抜き出し方

まず、証明書を取得したいサーバーにアクセスをし、その通信をWiresharkを使ってパケットキャプチャします。

Server Hello が飛んできた後に、Certificateのやり取りが見えます。この中に証明書が入っています。上の画面キャプチャーの青色で反転させているパケットです。このパケットの中を見ていきます。

  1. Secure Sockets Layer
  2. TLSV1.2 Record Layer: Handshake Protocol : Certificate
  3. Handshake Protocol: Certificate
  4. Certificates (バイト数)

の順にクリックして、詳細を表示させます。

その中に、Certificate (id-atCommonName=ドメイン名)のパケットが見えます。

id-at-ConnomName=w.usabilla.com を取り出してみます。

そのパケットを選択し、右クリックメニューを表示させます。

メニューから、Export Selected Packet Bytes… をクリックします。

このパケットを、証明書として保存します。名前をつけて保存のウィンドウが表示されますので、ファイル名のところで名前を指定します。

この時のポイントは、拡張子を「.crt」にして保存することです。こうすることで、Windows 上からは証明書として認識されますので、ダブルクリックで中が見られるようになります。

証明書の内容を見てみる

名前をつけて保存した証明書ファイルを開いて、中をみてみましょう。

w.usabilla.com.crt の証明書を、駄ぬんるクリックして開いてみます。

発行社はAmazonなんですね。

「詳細」タブをクリックして、証明書の詳細も見てみましょう。

証明書の記載項目の一覧が表示されますので、「サブジェクト」をクリックしてみます。

CN: Common Name が表示されましたね。

次に、「サブジェクト代替名」をクリックしてみます。

SAN: Subject Alternative Name が表示されましたね。

証明書の中身が分かりましたので、これで代理証明書を作成することが可能です。自分でCA局のサーバーを建てて、そこでサインして発行するのも良いのですが、オンラインで簡単に証明書を発行できるサイトがあります。

これも使ってみてください。

関連する記事:

最近の記事:

カテゴリー
2021年 AWS Azure SaaS クラウド コンピューター サーバレス 技術一般 証明書

オンライン証明書作成ツール

PVアクセスランキング にほんブログ村 にほんブログ村 ブログブログへ
にほんブログ村

アプリケーションのテストを行う時、サーバ証明書が必要になることがあると思います。私の場合ですと、インターネット上のアプリケーション(SaaS)の代理証明書が欲しいケースが多いです。

CA 局を持っていれば、そのサーバーで、証明書の発行もサインもしてしまえば良いのですが、たまにしか使わない証明書発行のために、わざわざ CA 局のサーバーを構築するのも手間です。

そんな時に、オンラインで発行してくれるサイトを見つけました。CertificateTool.com というサイトです。

必要となる各種証明書を発行できます。

もちろん、暗号化のビット数も選べます。

証明書の中に含める属性だって、自由に追加・削除可能です。

Subject Alternative Names (SAN) を追加してみました。

Certificate Signing Request (SCR) もでき、その際のハッシュのアルゴリズムも選べます。

SCR なのか、自己署名なのかの選択も可能です。

今回は、SHA256のハッシュで、自己署名、期間は1年で作成してみます。

Submit ボタンを押せば完了です。

できました。非常にお手軽です。ダウンロードの画面に移動するので、そこから必要となる証明書をダウンロードできるようになります。

プライベートキーはテキストベースで入手も可能です。

証明書も、テキストベース、PEM などのファイル形式でも入手可能です。以下の形式をサポートしてます。

  • PEM Certificate
  • PKCS#12 Certificate and Key
  • PKCS#7 Certificate(s)

CSR もできるから、ここで発行した証明書を、自社のCA局でサインして使うことだってできちゃいます。

Office 365 のような SaaS サービスで使用されているサーバー証明書が欲しい場合、代理証明書としてのサーバー証明書を作成します。要は、実際に Office 365 で使用されている証明書と同じ内容のサーバ証明書を自分で作成し、自分のCA局でサインするのです。

代理証明書を作成する上で必要な情報は、「CN」や「SAN」になります。Microsoft がウェブ上で公開している情報もありますが、実際に Office 365 にアクセスし、通信の中で飛んでくる証明書をパケットから抜き出して内容を確認することが一番確実です。

具体的には、Outlook を使って Exchange Online に通信し、その時のパケットキャプチャーを取得することです。

実際の手順を紹介していますので、こちらをご参照ください。

関連する記事:

最近の記事:

カテゴリー
2020年 AWS AWS Solutions Architect - Associate クラウド コンピューター メッセージング 技術一般 認定資格

AWS を学ぶ(24)3つのメッセージングサービス

PVアクセスランキング にほんブログ村 にほんブログ村 IT技術ブログへ
にほんブログ村

AWS には、SNS(Simple Notification Service)、SQS(Simple Queue Service)、SES(Simple Email Service)といった 3 つのサービスがあります。

これらの違いは以下のようになります。

  • Amazon SNS:プッシュ型の通知が得意。メール通知、SMS、モバイルプッシュが可能。要領制限があり、長文メッセージには向いていない。
  • Amazon SES:Eメールでの配信が得意。コンテンツ配信に向いているが、メール以外での配信はできない。
  • Amazon SQS:プル型のメッセージ処理が得意。非同期型のメッセージをキューイングする。

Amazon SNSとは

Amazon SNS(以下、SNS)は、わざわざそのためだけにサーバーを用意しなくても、SNS サービスを利用することで、アプリケーションからの通知を可能にします。ユーザーが何かを行ったタイミングを起点としてで通知するメッセージングを手軽に実現できます。

具体的な通知の例としては、商品が発送されたタイミンングでの発送完了通知や、フリーマーケットで商品が売れた時の通知などがあります。

またこれだけでなく、登録ユーザー全員に一斉告知のメッセージを送るという使い方もできます。

SNSの特徴
  • イベントをトリガーとしてのメッセージ

商品の購入、アカウント情報の変更、コンテンツの更新などの利用できます。

  • モバイル端末へのプッシュ機能

iOS、Android などのスマートフォンに対してプッシュ通知が行えます。

  • セキュリティーを確保

HTTPS API による通信のセキュアな状態を保つことが可能です。

  • サービスとしての利用

前払いや最低料金などはなし。完全な従量課金制で使った分しか支払う必要がありません。

Amazon SES とは

Amazon SES (以下、SES)は、AWS が提供するメールサービスです。メールサーバーをわざわざ用意しなくても、SES サービスを利用すれば、メール配信が可能になります。

具合的な使い方としては、マーケティングメールの配信メールマガジンの配信などがあります。

SES は、導入コストが安いことや、固定費用が掛からず従量課金という点で、企業レベルでの利用だけでなく、個人レベルでの利用にも向いています。

SES の特徴
  • 安い導入コスト

AWS のアカウントとメールアドレス、利用可能なドメインがあれば利用できます。

  • 低価格な料金

固定費用や最低料金はなし、従量課金で利用できます。

EC2 でホストされているアプリケーションからの配信の場合、毎月最初の 62,000 通は無料です。その後でも、1,000 通毎に、0.1 USDしかかかりません。

  • 高い信頼性

SES には、送信したメールが確実に届く様に、信頼性を高める機能があります。送信頻度のコントロールやアドレス偽装対策などです。

Amazon SQS とは

Amazon SQS(以下、SQS)は AWS が提供するキューイングサービスです。アプリケーションの切り離し(疎結合)とスケジューリングといった処理を、AWS のサービスで行えます。

キューとは、メッセージを管理するための入れ物のようなものです。

エンドポイントと呼ばれるURLを介して、キューに入ったメッセージを利用します。

SQS の利用パターン例

  • 一回の処理で許容する処理時間を超過しそうな場合
  • 一度に大量のデータ件数を処理する場合
キューの種類

キューの種類には、以下の 2種類があります。

処理数が優先なら標準キュー、順序が重要なら FIFO キューといった使い方になります。

  • 標準キュー(Stanadrdキュー)

ほぼ無制限のトランザクション数(TPS)を処理します。

ただし、メッセージを受け取った時とは異なる順序で配信されることもあります。また、複数の同じメッセージのコピーが配信されることもあります。

  • FIFO キュー

バッチ処理なしで毎秒最大 300 件、バッチ処理ありで最大3,000件のトランザクション (TPS)をサポートします。また、メッセージが送信または受信された順序が厳密に保持されます (先入れ先出し)。

トランザクション処理は、標準キューより下がります。

SQS 向けの機能
  • 可視性タイムアウト

設定した期間、重複したメッセージ配信が行われないようにする機能

メッセージは、受信しただけでは削除されず、クライアント側からの明示的な削除指示を受けた際に削除されます。そのため、メッセージの受信中に、たのクライアントが取得してしまう可能性もあります。それを防ぐ機能となります。

デフォルトは30秒で、最大12時間まで設定できます。

  • ショートポーリングとロングポーリング

キューからのメッセージ取得の際で、対象のキューがない場合、キューに新規登録されるのを一定時間待つ機能。

待機する(メッセージがある場合にレスポンスを返す)のをロングポーリング、待機しない(リクエストを受け取ると、メッセージがあるなしに関わらず、即レスポンスを返す)のをショートポーリングと呼びます。

デフォルトはショートポーリングになります。

  • デットレターキュー

正常に処理できないデータを別のキュー(デッドレターキュー)に格納する機能

問題のあるメッセージ(処理失敗を1ー1,000回で設定)を分離して、処理が成功しない理由を調べることができるため、デッドレターキューは、アプリケーションやメッセージングシステムのデバッグに役立ちます。

  • 遅延キュー

キューに送られたメッセージを、一定時間見えなくする機能

  • メッセージタイマー

個々のメッセージを一定間隔見えなくする機能

メッセージサイズ

キューに格納できるメッセージサイズの最大は256KBとなります。

大きなサイズのデータを扱う際には、S3やDunamoDBに一旦格納し、そこへのパスやキーといったポインターとなる情報を渡すことで対応できます。

この教材を使って勉強してます。

AWS認定資格試験テキスト AWS認定ソリューションアーキテクト-アソシエイト

AWSに関連する記事:

関連する記事:

最近の記事:

カテゴリー
2020年 AWS PaaS クラウド コンピューター サーバレス 技術一般 自動化

AWS を学ぶ(23)CloudFormation を使ってみる

PVアクセスランキング にほんブログ村 にほんブログ村 IT技術ブログへ
にほんブログ村

前回の記事で、CloudFormation がどのようなものなのかを調べてみました。

今回は、実際に使ってみたいと思います。

  1. テンプレートでVPC を作成する
  2. Ref 関数でサブネットを作成する
  3. その他のネットワーク関連を作成する
  4. EC2 のひな形を作成する
  5. Parameters セクションを使って、実行時にEC2 のインスタンスタイプを選択できるようにする
  6. Parameters + AWS 固有のパラメーターを使用して、アカウントにあるキーペアを、EC2 実行時に埋め込む
  7. スタックの削除する

CloudFormation を使ってみる

テンプレートから基本環境の作成

まず最初に、VPCの状況を確認しておきます。

私の環境では、東京リージョンに、現在3つのVPCがあります。

AWS の管理コンソールの検索テキストボックスから、「CloudFormation」を検索してクリックします。

CloudFormation の管理コンソールが表示されます。

「スタックの作成」をクリックします。

スタックの作成画面が表示されます。

前回のサンプルテンプレートを使用します。サンプルスクリプトを保存し、拡張子を「.yml」にしておきます。

「ファイルの選択」をクリックし、YAMLのサンプルファイルを読み込ませます。

「デザイナーで確認」をクリックすると、YAMLファイルを読み込んで作成するスタックの状況がみられます。

VPCを作成する部分だと、こんな感じですね。

画面を戻を戻ると、作成のし直しになっちゃいますね。これって、見ない方がいいのかな?

進めると、スタックの名前の画面が表示されます。

スタックの名前を入力します。

「次へ」をクリックして進みます。

スタックのオプションの画面が表示されます。

今回は特に設定しません。

「次へ」をクリックして進みます。

レビューの画面が表示されますので、内容を確認します。

「スタックの作成」をクリックして、スタックを作成します。

スタックの作成が始まりました。

画面左側のメニューで、「CREATE_COMPLETE」の緑色の文字が表示されれば、スタックの作成は完了です。

「リソース」タブをクリックすると、リソースの一覧が表示されます。

VPCとサブネットが作成されていますね。それぞれの名前を見てみると、YAMLファイルの中で指定したものになっていますね。

VPC の画面を見ていますと、先ほど3つしかなかったVPC が4つになってますね。「cfn-vpc」が、今回作成されたものです。

サブネットの画面を見てみると、サブネットも追加されてますね。「cfn-subnet」が、今回作成されたものです。

インターネットゲートウェイも見てみます。新規で作成されてますね。「cfn-igw」が今回作成されたものです。

ルートテーブルも見てみます。ルートテーブルも新規で作成されてますね。「cfn-rt」が今回作成されたものです。

設定内容を追加する

最初に作ったテンプレートに、項目を追加するということはよくあることでしょう。今度は、それを想定して、別の項目を追加して反映させてみます。

今回試してみたいのは、前回作成したサブネット上に、新規でEC2 インスタンスを起動させることです。その際に、イメージサイズを選択して起動できるようにします。

前回のテンプレートに、以下の2つを追記してみます。

起動時に、インスタンスタイプを、「t2.micro」「t2.small」「t2.medium」の3つから選べるようにします。

Parameters:
  InstanceType:
    Type: String
    Default: t2.micro
    AllowedValues:
      - t2.micro
      - t2.small
      - t2.medium
    Description: Select EC2 instance type.
  KeyPair:
    Description: Select KeyPair Name.
    Type: AWS::EC2::KeyPair::KeyName

さらに、起動するインスタンスに、Keypairも指定できるようにします。

セキュリティーグループも作成し、SSHでのアクセスのみを許可します。

cfnEC2Instance:
    Type: 'AWS::EC2::Instance'
    Properties:
      ImageId: !FindInMap [ RegionMap, !Ref "AWS::Region", hvm ]
      InstanceType: !Ref InstanceType
      SubnetId: !Ref cfnSubnet
      BlockDeviceMappings:
        - DeviceName: '/dev/xvda'
          Ebs:
            VolumeType: 'gp2'
            VolumeSize: 8
      Tags:
        - Key: 'Name'
          Value: 'cfn-ec2-instance'
      SecurityGroupIds:
        - !Ref cfnSecurityGroup
      KeyName: !Ref KeyPair
  cfnSecurityGroup:
    Type: "AWS::EC2::SecurityGroup"
    Properties:
      GroupDescription: "cfnSecurityGroup"
      VpcId: !Ref cfnVpc
      Tags:
        - Key: 'Name'
          Value: 'cfn-ssh-sg'
      SecurityGroupIngress:
      - IpProtocol: tcp
        FromPort: '22'
        ToPort: '22'
        CidrIp: 0.0.0.0/0

変更するスタック名を選択し、「変更する」をクリックします。

今回は既存のテンプレートを変更しますので、「既存テンプレートを書き換える」を選択します。

「テンプレートファイルのアップロード」を選択します。

「ファイルの選択」から、追記したテンプレートファイルをアップロードします。

「次へ」をクリックして進みます。

インスタンスを起動させる際に、インスタンスタイプとキーペアを選択できるようにしたので、選択画面が表示されました。

今回は、インスタンスタイプ「t2.micro」とキーペア「amazon-linux-test」を選択します。

キーペアで表示される内容ですが、ご使用の環境で異なります。表示荒れるのは、自分の使用しているAWSのリージョンで使用できるキーペアです。

「次へ」をクリックして進みます。

スタックのオプション画面が表示されます。

今回は、オプションは何も設定しません。

「次へ」をクリックして進みます。

レビューの画面が表示されます。

設定内容を確認します。

「スタックの変更」をクリックします。

EC2 インスタンスの作成が始まりました。

スタックの変更が完了しました。

EC2 の管理コンソールを見てみると、指定した名前でインスタンスが起動していますね。

スタックの削除

対象のスタック名を選択し、「削除」をクリックします。

確認のポップアップウィンドウが表示されます。

「スタックの削除」をクリックします。

スタックの削除が開始されました。

数分待つと、スタックが完全に削除されます。

EC2 を見てみると、先ほど起動させたインスタンスが削除されています。

VPC の方も、この動作確認向けに作成したものは消えてますね。

CloudFormationは、テンプレートを作成して必要なリソースを作成することができるので便利です。

削除も、テンプレートに記載されたリソースを個別ではなく、全てを一気に削除してくれるので便利ですね。

注意点は、CloudFormationでリソースを作成した後に、マニュアルでリソースの変更をしないことです。テンプレートの内容と不一致になりますし、後からテンプレートを編集するのも大変になります。

この教材を使って勉強してます。

AWS認定資格試験テキスト AWS認定ソリューションアーキテクト-アソシエイト

AWSに関連する記事:

関連する記事:

最近の記事:

カテゴリー
2020年 AWS PaaS クラウド コンピューター サーバレス 技術一般 自動化

AWS を学ぶ(22)CloudFormation とは何か?

PVアクセスランキング にほんブログ村 にほんブログ村 IT技術ブログへ
にほんブログ村

AWS の自動化サービスは、以下の 3つがあります。

  • AWS Elastic Beanstalk
  • AWS OpsWorks
  • CloudFormation

どのサービスにも向き不向きがあり、得意とする部分がありますので、要件に合わせて使用することが大切です。

Elastic Beanstalk

インフラ構成の自動構築とアプリ導入の自動化サービスです。こちらの記事で、以前調べています。

  • Web サーバー構成(ELB + AutoScaling + EC2)
  • バッチワーカー構成(SQS + AutoScaling + EC2)
  • OS より上も下も、標準構成の範囲内で対応(自由度は高くはない)

OpsWorks

Chef を利用した構成管理サービスです。

  • EC2 上のエージェントが OpsWorks 上の Chef レシピ(構成設計図)を参照し自動構築
  • 自前で Chef Client / Server を構築・保守する必要がない
  • Chef を既に利用している環境に最適
  • OS よりも下のレイヤーに関しては、できることが限られている

CloudFormation

AWS のリソース管理・構築を自動化するサービスです。

  • テンプレート(構築設計書)を JSON や YAML 形式で記述
  • テンプレートを元に、AWS のリソースを自動構築
  • OS より上は、Ansible や Chef を併用する必要がある
  • OS より下は、テンプレートに従って何でも可能(自由度が高い)

CloudFormation とは

CloudFormation は、以下の2つから構成されます。

  • テンプレート
  • スタック

テンプレート: AWS のリソースを JSON や YAML 形式で記載した構成設計図

スタック: テンプレートから構成された AWS のリソース群

複数のリソースを集合として管理しているため、削除する時も、個別でなく、全体で削除が可能となります。

テンプレートの構成

今回は、YAML 形式を使ってみます。サンプルのテンプレートは、こんな感じです。

テンプレートの内容ですが、

「VPC を作成し、そこにサブネットを 1つ作成し、IGW を作成して、デフォルトルートを向ける」

になっています。

AWSTemplateFormatVersion: '2010-09-09'
Description: Test CloudFormation Template

Resources:
  cfnVpc:
    Type: 'AWS::EC2::VPC'
    Properties:
      CidrBlock: '192.168.0.0/16'
      Tags:
        - Key: 'Name'
          Value: 'cfn-vpc'
  cfnSubnet:
    Type: 'AWS::EC2::Subnet'
    Properties:
      CidrBlock: '192.168.1.0/24'
      MapPublicIpOnLaunch: true
      Tags:
        - Key: 'Name'
          Value: 'cfn-subnet'
      VpcId: !Ref cfnVpc
  cfnInternetGateway:
    Type: AWS::EC2::InternetGateway
    Properties:
      Tags:
      - Key: 'Name'
        Value: 'cfn-igw'
  cfnAttachGateway:
    Type: AWS::EC2::VPCGatewayAttachment
    Properties:
      VpcId: !Ref cfnVpc
      InternetGatewayId: !Ref cfnInternetGateway
  cfnRouteTable:
    Type: AWS::EC2::RouteTable
    Properties:
      Tags:
        - Key: 'Name'
          Value: 'cfn-rt'
      VpcId: !Ref cfnVpc
  cfnRoute:
    Type: AWS::EC2::Route
    DependsOn: cfnInternetGateway
    Properties:
      RouteTableId: !Ref cfnRouteTable
      DestinationCidrBlock: 0.0.0.0/0
      GatewayId: !Ref cfnInternetGateway
  cfnSubnetRouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      SubnetId: !Ref cfnSubnet
      RouteTableId: !Ref cfnRouteTable

各項目を、1つずつ見ていきましょう。

「AWSTemplateFormatVersion: ‘2010-09-09’」ですが、バージョンの日付は、このまま使う必要があります。変更すると、エラーになります。

現在はこれを使うようにと、AWSのページにも記載がありました。

「Resources:」で、VPC、サブネット、IGW、ルートテーブルなどを指定して、設定をしていきます。

ここで指定できる項目や指定の仕方は、AWS のこちらのページに詳しく記載があります。

まず、VPC を作成します。

VPC で使用するアドレスブロックは、ここでは、「192.168.0.0 /16」 とします。

Tags の「Value:」 で、VPC の名前をタグ付けします。

  cfnVpc:
    Type: 'AWS::EC2::VPC'
    Properties:
      CidrBlock: '192.168.0.0/16'
      Tags:
        - Key: 'Name'
          Value: 'cfn-vpc'

次に、VPC 内に、サブネットを作成します。

サブネットで使用するアドレス範囲は、ここでは、「192.168.1.0 /24」 とします。

Tags の「Value:」で、サブネットの名前をタグ付けします。

「VpcId:」 で、どこの VPC 上にサブネットを作成するのかを指定するのですが、「!Ref」関数で、上で作成した VPC の名前を参照させます。

 cfnSubnet:
    Type: 'AWS::EC2::Subnet'
    Properties:
      CidrBlock: '192.168.1.0/24'
      MapPublicIpOnLaunch: true
      Tags:
        - Key: 'Name'
          Value: 'cfn-subnet'
      VpcId: !Ref cfnVpc

次に、Internet Gateway を作成します。

Tags の「Value:」で、Internet Gateway の名前をタグ付けします。

  cfnInternetGateway:
    Type: AWS::EC2::InternetGateway
    Properties:
      Tags:
      - Key: 'Name'
        Value: 'cfn-igw'

次に、作成したInternet Gateway を VPC にアタッチします。

「VpcId:」で、どこの VPC にアタッチするするのかを指定するのですが、「!Ref」関数で、上で作成した VPC の名前を参照させます。

cfnAttachGateway:
    Type: AWS::EC2::VPCGatewayAttachment
    Properties:
      VpcId: !Ref cfnVpc
      InternetGatewayId: !Ref cfnInternetGateway

次に、ルートテーブルを作成します。

Tags の「Value:」で、Internet Gateway の名前をタグ付けします。

「VpcId:」で、どこの VPC にアタッチするするのかを指定するのですが、「!Ref」関数で、上で作成した VPC の名前を参照させます。

cfnRouteTable:
    Type: AWS::EC2::RouteTable
    Properties:
      Tags:
        - Key: 'Name'
          Value: 'cfn-rt'
      VpcId: !Ref cfnVpc

次に、デフォルトルートを作成します。

「RouteTableId:」で、どのルートテーブルに作成するのかを指定するのですが、「 !Ref cfnRouteTable」関数で、上で作成したルートテーブルの名前を参照させます。

cfnRoute:
    Type: AWS::EC2::Route
    DependsOn: cfnInternetGateway
    Properties:
      RouteTableId: !Ref cfnRouteTable
      DestinationCidrBlock: 0.0.0.0/0
      GatewayId: !Ref cfnInternetGateway

最後に、ルートテーブルをサブネットに関連づけます。

「SubnetId:」 で、どのサブネットに関連づけるのかを指定するのですが、「!Ref cfnSubnet」関数で、上で作成したサブネットの名前を参照させます。

「RouteTableId:」で、どのルートテーブルに作成するのかを指定するのですが、「 !Ref cfnRouteTable」関数で、上で作成したルートテーブルの名前を参照させます。

cfnSubnetRouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      SubnetId: !Ref cfnSubnet
      RouteTableId: !Ref cfnRouteTable

「VPC を作成し、そこにサブネットを1つ作成し、IGW を作成して、デフォルトルートを向ける」

これくらいの作業であれば、GUI から行っても良いのですが、サブネットの数が多かったりすると大変です。自動化サービスを使うと便利ですね。

長くなってしまったので、実際にCloudFormation を使ってみるのは、次の記事にしたいと思います。

この教材を使って勉強してます。

AWS認定資格試験テキスト AWS認定ソリューションアーキテクト-アソシエイト

AWSに関連する記事:

関連する記事:

最近の記事:

カテゴリー
2020年 AWS AWS Solutions Architect - Associate PaaS クラウド コンピューター サーバレス 技術一般 認定資格

AWS を学ぶ(21)Elastic Beanstalk って何だろう?

PVアクセスランキング にほんブログ村 にほんブログ村 IT技術ブログへ
にほんブログ村

AWS Elastic Beanstalk (以下、Elastic Beanstalk)は、アプリケーションを実行するインフラを学習することなく、AWS でアプリケーションを素早くディプロイ、管理できます。これにより、管理の複雑さを激減させることが可能となります。

つまり、PaaS(Platform as a Service) ですね。

ユーザーは、アプリケーションをアップロードするだけです。あとは、AWS 側で、Elastic Beanstalk が自動的に、容量のプロビジョニング、負荷分散、拡張、及びアプリケーションの状態のモニタリングを処理します。

つまり、ユーザーは、アプリケーション開発にのみ集中し、インフラの方はAWSに任せてしまうということです。正にクラウドですね。

Elastic Beanstalk は、複数のアプリケーションをサポートしています。

  • Go
  • Java
  • .NET
  • Node.js
  • PHP
  • Python
  • Ruby

アプリケーションをデプロイすると、Elastic Beanstalk は選択されたサポートされるプラットフォームのバージョンをビルドし、複数の AWS リソースをプロビジョニングして、アプリケーションを実行します。

Elastic Beanstalk に関して別途料金が発生することはありません。アプリケーションが使用する基になる AWS リソースに対してのみ支払うだけとなります。

Elastic Beanstalk を使ってみる

Elastic Beanstalkは、便利そうということは分かったのですが、やはりまだピンと来ません。実際に触ってみましょう。

Elastic Beanstalk には、サンプルアプリケーションが用意されています。それを使って試してみましょう。

AWS 管理コンソールの検索メニューから、「Elastic Beanstalk」と入力し、クリックします。

Elastic Beanstalk の管理画面が表示されます。

今すぐ始めるのところの「Create Application」をクリックします。

ウェブアプリケーションの作成画面が表示されます。

アプリケーション名を入力します。

キーも入力します。

プラットフォームは、Tomcat を選択します。そのオプションは、表示されたものをそのまま使います。

画面下部の「アプリケーションの作成」をクリックして、次に進みます。

アプリケーションの作成が始まりました。

完了するまでに、5分くらいかかります。

ログを見ていると、EC2 にインスタンスを作ったり、ELB を作成したり、いろいろしていますね。

アプリケーションの作成が完了しました。

環境名のところに、アプリケーションのアクセス先になるURL が表示されています。それをクリックしてアクセスします。

ブラウザーが開き、サンプルアプリケーションが表示されました。

動作確認成功です。

アプリケーションの作成時に、いろいろとリソースを作成するログが見えましたので、実際に見て見ましょう。

EC2 の画面を見て見ます。インスタンスが新規に作成されてますね。

次に、ELB も見て見ます。ELB が新規で作成されています。

ELB のDNS 名にもアクセスして見ましょう。サンプルアプリケーションの画面が表示されますね。

ELB のターゲットグループも、ちゃんと作成されています。

次に、CLoudFormation を見て見ます。こちらにもスタックが作成されています。

最後に、S3 です。ここにも新規でバケットができています。

必要となるリソースを自動で作成して、アプリケーションを展開するというのは本当ですね。これは素晴らしいです。

先ほどは、サンプルアプリケーションでしたので、今度はサンプルじゃないアプリケーションを動かしてみたくなりました。

しかし、私はコードが書けません。そこで、インターネット上に何かアプリケーションが公開されていないかと探してみたら、ありました!私と同じ様に、Elastic Beanstalk を試してました。それを動かしてみようと思います。

新規でアプリケーションを作成します。

アプリケーション名を入力します。

キーも入力します。

プラットフォームは、先ほどと同じでTomcat です。

そのオプションは、表示されたものをそのまま使ってみましょう。

今回は、アプリケーションを持ち込みますので、「アプリケーションコード」のところは、「コードのアップロード」を選択します。

「ファイルを選択」をクリックして、アプリケーションをアップロードします。

注意点は、アップロードするアプリケーションを圧縮しておく必要があるみたいです。

画面下部の「アプリケーションの作成」をクリックします。

アプリケーションの作成が始まりました。

5分くらいで、アプリケーションの作成が完了しました。

ブラウザーでアクセスしてみましょう。

表示されました。持ち込みアプリケーションでも、動作確認成功です。

Elastic Beanstalk は、アプリケーションのバージョン管理もできるみたいです。

Elastic Beanstalk は、アプリケーション開発者にとって、素晴らしい環境だと思います。自分のアプリケーションを動かすインフラ側の環境は、一切気にすることなく、AWS が自動で作成してくれます。コードを書くことだけに集中できますね。

この教材を使って勉強してます。

AWS認定資格試験テキスト AWS認定ソリューションアーキテクト-アソシエイト

AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト【電子書籍】[ 佐々木 拓郎 ]価格:2,618円
(2020/8/30 16:09時点)
感想(0件)

AWSに関連する記事:

関連する記事:

最近の記事:

カテゴリー
2020年 AWS AWS Solutions Architect - Associate クラウド コンピューター 技術一般 証明書 認定資格

AWS を学ぶ(20)AWS Certificate Manager を使ってみる

PVアクセスランキング にほんブログ村 にほんブログ村 IT技術ブログへ
にほんブログ村

前回に引き続き、今回も暗号化に関する記事です。

インターネット通信に、暗号化は必須となりました。サーバーとのやり取りの暗号化、そのアクセス先のサーバーの信頼性を確認するために、サーバー証明書が使われています。

その際に利用されるプロトコルが、SSL (Secure Sockets Layer) / TLS (Transport Layer Security) となります。

そこで使用される証明書は、SSL 証明書と呼ばれます。実際に使用されているのは、SSL 3.0 をベースにした後継のプロトコルであるTLSとなります。

SSL 証明書の種類と役割

証明書は、主に以下の2つのために使用されます。

  • 通信経路での安全性の確保
  • 通信している相手が誰であるかの証明

通信経路の安全性の確保は、通信内容を盗聴されない様にすることと、通信内容を改ざんされない様にすることのために使用されます。

通信している相手が誰であるかの証明には、証明局(CA: Certification Authority)を使用し、ここで証明書を発行・管理します。

証明書の種類

証明書には、以下の 4 種類があります。

  1. 自己証明書:自分で証明局を建てて証明書を発行
  2. ドメイン証明(DV):ドメインの所有のみを証明し、組織情報の証明はされない
  3. 組織証明(OV):組織情報を証明
  4. 拡張認証(EV):OV よりも厳しい審査で認証し、アドレスバーに組織名が表示される

Vは「Validation」の略で、DV = Domain Validation、OV = Organization Validation、EV = Extended Validationになります。それぞれのもう少し細かい説明は、ここのページが参考になります。

AWS Certificate Manager

AWS Certification Manager (以下、ACM)は、AWS が証明局となり、DV 証明書を発行するサービスです。

2048ビットRSA鍵と、SHA-256 の SSL/TLS サーバー証明書の「作成と管理」を行います。ACM が発行する証明書の有効期限は13ヶ月となり、自動で更新するという設定も可能となります。

ACM を利用できる対象は、AWS のサービスのみとなりますが、無料で使用できるというメリットがあります。

ACM の初期設定時には、ドメインの所有の確認が必要で、メール送信、またはDNS を利用して確認します。

ACM が利用可能なサービス(2020年9月現在)

  • Elastic Load Balancer (ELB)
  • Amazon CloudFront
  • AWS Elastic Beanstalk
  • Amazon API Gateway

AMC を使ってみる

AWS 管理コンソールの検索テキストボックスに「Certificate Manager」と入力し、Certificate Manager をクリックします。

証明書の管理画面が表示されます。

「証明書のリクエスト」をクリックします。

証明書のリクエスト画面が表示されます。

今回は、EC2 上に稼働させている Web サーバー向けに証明書を発行したいと思います。「パブリック証明書のリクエスト」を選択します。

画面下部の「署名書のリクエスト」をクリックして、次へ進みます。

対象となるドメイン名の指定です。

ドメイン名のところに、EC2 上で稼働させている Web サーバーで使用しているドメイン名を入力します。

画面下部の「次へ」をクリックして、次へ進みます。

証明書の確認方法の選択です。

今回は、自分が管理している Web サーバーで、DNS の方も管理していますので、「DNS の確証」を使います。

画面下部の「次へ」をクリックして、次へ進みます。

タグの設定です。

後から分かりやすい様に、名前を付けておきます。

最終確認です。

今まで設定した内容を確認し、間違いがなければ、画面下部の「確証とリクエスト」をクリックします。

証明書が発行されました。

「DNS の設定をファイルにエクスポート」をクリックし、ファイルをダウンロードしておきます。

画面下部の「続行」をクリックします。

証明書は発行されたのですが、確証状態のところが、「確証保留中」になっています。証明書はまだ使えない状態です。

先ほどダウンロードしたファイルの内容を、DNS (AWS ならRoute 53) 側に設定します。

しばらく時間がかかりますが、確証が完了すると、確証状態が「成功」に変わります。これで、証明書が使える状態になりました。

ちなみにこの記事を表示している Web サーバーも EC2 上にあり、Route 53 やACM を使用しています。

この教材を使って勉強してます。

AWS認定資格試験テキスト AWS認定ソリューションアーキテクト-アソシエイト

AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト【電子書籍】[ 佐々木 拓郎 ]価格:2,618円
(2020/8/30 16:09時点)
感想(0件)

関連する記事:

最近の記事:

カテゴリー
2020年 AWS AWS Solutions Architect - Associate クラウド コンピューター 技術一般 認定資格

AWS を学ぶ(19)AWS の暗号化サービス

KMS と CloudHSM

機密性の高いデータを扱う際には、暗号化が必要となります。まず、鍵管理サービスです。AWS の鍵管理サービスは 2 種類あります。

  • KMS: Key Management Service
  • CloudHSM: Cloud Hardware Security Module

KMS は、AWS が管理するマネージドサービスです。

CloudHSM は、AWS 内に専用のハードウェアを用意し、これを利用して鍵管理するサービスです。

この2つのサービスの違いは、信頼の起点(Roots of Trust)です。ユーザー自身なのか、AWS に任せるのか、です。

KMS

KMS には、以下の 3 つの API が用意されています。

  • Encrypt: ユーザーデータ暗号化のための API で、4KB までの平文データをサポート
  • Decrypt: ユーザーデータ復号化のための API
  • GenerateDataKey: ユーザーデータの暗号化に利用するカスタマーデータキーを生成
マスターキーとデータキー

KMS では、2 つの鍵を管理しています。

  • マスターキー: Customer Master Key (CMK)
  • データキー: Customer Data Key (CDK)

CMK は、データキー (CDK) を暗号化するために使用される鍵です。ユーザーデータの暗号化には使用されません。

CDK は、ユーザーデータを暗号化するために使用される鍵です。通常は AWS で暗号化されて保存されいますので、ユーザーデータの暗号化や復号化を行う度に、CDK を復号化して使用します。

つまり、CDK でユーザーデータを暗号化し、CMK を使って、 CDK をさらに暗号化します。この手法は、エンベロープ暗号化と呼ばれています。

CloudHSM

CloudHSM は、専用のハードウェアを使用する為、初期コストも月次の固定費も必要となります。大規模なシステム向けや、特定の規制、法令に準拠したい場合に使用されます。

CloudHSM で、FIPS 140-2 のレベル 3 認証済みの HSM を使用して、暗号化キーを管理できます。

上記の様に、CMK とCDK があり、2 段階の鍵構造になっています。この理由は、セキュリティーの向上のためです。

データキーは、S3、EBS、Redshift など、暗号化の対象ごとに作成します。これにより、万が一、鍵の漏洩があった際にも、そのリスク範囲を限定することができます。

そして、データキーをマスターキーで暗号化することにより、実際の運用で使用する機会の多いデータを保護します。マスターキーを集中管理することにより、全体としてのセキュリティーを高めています

クライアントサイドとサーバーサイドの暗号化

暗号化は、クライアントサイドで行うのか、サーバーサイドで行うのかも、常用なポイントとなります。

クライアントサイドの暗号化

クライアントサイドの暗号化は、ユーザー側の処理で行います。AWS が提供するSDKを利用するケースが多いです。EC2やLambdaなどでプログラムで暗号化して、S3などにアップロードするというケースも、クライアントサイドの暗号化となります。

クライアントサイドの暗号化の利点は、暗号化れたデータが転送されますので、経路が暗号化されていなくても、ユーザーデータを保護できるという点です。

クライアント側暗号化には、AES 256 ビットが使用できます。

クライアント側のマスターキーと暗号化されていないデータが AWS に送信されることありません。暗号化キーを安全に管理することが重要です。キーを紛失した場合、データを復号することはできません。

AWS オフィシャルサイト

サーバサイドの暗号化

サーバーサイドの暗号化は、AWS内で行います。サーバーサイドの暗号化は限定されていて、S3などの一部のサービスのみで提供されています。

サーバー側の暗号化は、保管時のデータ暗号化に関するものです。  S3 は、ディスクに書き込まれるときにデータをオブジェクトレベルで暗号化し、ユーザーがデータにアクセスする時に復号します。

この教材を使って勉強してます。

AWS認定資格試験テキスト AWS認定ソリューションアーキテクト-アソシエイト

AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト【電子書籍】[ 佐々木 拓郎 ]価格:2,618円
(2020/8/30 16:09時点)
感想(0件)