新米インフラエンジニアの研修日記

とある会社で研修させて頂いたことを書いてます。

S3について

S3
Simple Storage Service
頭文字のSが3つでS3です。

f:id:the-casket-of-star:20160411202216p:plain

  1. 用途・名称

  2. アクセス方法

  3. アクセス制限・認証

  4. Website Hosting

  5. 保管方法


f:id:the-casket-of-star:20160412021525p:plain

1. 用途・名称
用途は、ファイルを保存し、それを読み出すことができます。

ファイルを貯めておくところを「backet」と呼びます。
backetに入れるファイルを「object」と呼びます。

2. アクセス方法
アクセスの方法は2種類あります。
・S3 API
・URLで直接アクセス

3. アクセス制限・認証
どこからでもアクセスできては困る場合に制限をかけれます。
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/UsingRRS.html

①IP制限
特定のユーザーしかアクセス出来ないようにする場合には良いです。
IAMロールを利用して、Amazon S3にIPアドレス制限 | Boiler Room


②時間制限
一時的にユーザーにダウンロードさせたい時などに使えます。 blog.cloudpack.jp

どちらもIAMの設定が必要ですので、お忘れなく。

③Query String(クエリストリング)
Webブラウザからのリクエストの場合に使えます。
http://dev.classmethod.jp/cloud/aws/s3-cors-upload/

4. Website Hosting
backetに静的HTMLファイルを入れて、ウェブサイトを表示させることができます。
例)http://example-bucket.s3-website-region.amazonaws.com

docs.aws.amazon.com
但し、S3のURLの前にはどっとは一つしか使えない点と、SSLは使えない点にご注意下さい。

独自ドメインで表示させたいという方は、
Route53というAWSDNSサービスを利用することで可能になります。

docs.aws.amazon.com

5. 保管方法

  ①標準ストレージ

  デフォルトのストレージです。
  何もしなかったら標準になります。

 ②低冗長化ストレージ(Reduced Redundancy Storage)
  オブジェクトをアップロードする際に、標準ストレージか低冗長化ストレージかを選択できます。
  標準ストレージよりも重要ではない再生可能なデータは、コストが安くなる低冗長化ストレージを選択した方が良いです。
  ログの集計ファイルはこちらが向いてます。
docs.aws.amazon.com

 ③Glacier

冗長化ストレージよりもめったにダウンロードしないものを保管するのに適しています。
  低冗長化ストレージよりも安いですが、ダウンロードする時に費用がかなりかかります。
  S3に保管していたものをそのままGlacierに保管して使います。
dev.classmethod.jp

Elastic Beanstalk

Elastic Beanstalk
発音は、「えらすてぃっく びーんすとーく」だそうです。
びーんずとーくだと思ってました(笑)

Beanstalkのイメージは下図な感じ↓
f:id:the-casket-of-star:20160406093300p:plain
Applicationの大枠があり、
environmentがありまして、それぞれにendpointがついており、cnameを設定できます。
Ex)test.example.com

environmentはいくつも作れます。

Versionという枠があり、ソースコードをバージョン毎に格納します。
裏側はS3のバケットです。

f:id:the-casket-of-star:20160406093314p:plain
仮に上を本番環境、下をステージング環境とします。
Ver.1.0を本番に、Ver.1.1をステージングにでデプロイして、開発を進めていくこととします。
ステージングの検証が問題ないので、Ver.1.1を本番にデプロイしたい!

そんな時もすぐできます!
そしてすぐ戻せるのです。

f:id:the-casket-of-star:20160405234035p:plain
environmentの中には大きく2種類あって、
①Web Server環境
②Worker環境
があります。

HTTPリクエストを処理するウェブアプリケーションならWebServer
バックグラウンドプロセスタスクを処理するアプリケーションならWorker
環境で作成します。

Worker環境のものをデプロイしてSQSに書き込める バックグラウンド処理タスクを実行できます。

また、Versionのファイルの中に.ebextensionsフォルダを置いて、
その下の各ファイルにコマンドやオプション設定を記述して、デプロイ時に実行するコードを入れておくことができます。

全体の裏側が実はCloudFormationで、別のリージョンにもすぐにコピーできたりするらしい。
すごい!

AWSを触ってみた①の続き ~ IAM その2~

前回はIAMの設定方法でした。
今回はもう少し掘り下げます。

ポリシーの中にも
「管理ポリシー」と「インラインポリシー」があります。
そして「管理ポリシー」の中にも
AWS管理ポリシー」と「カスタマー管理ポリシー」があります。

f:id:the-casket-of-star:20160325011927p:plain

管理ポリシーは、IAM画面の左側に記載されているポリシーのことです。

AWS管理ポリシーは、AWSが用意したポリシーです。

カスタマー管理ポリシーは、管理者が自分で作るポリシーです。

グループに割り当てると、そのグループに所属するユーザは全員同じポリシーが割り当てられます。

f:id:the-casket-of-star:20160325015309p:plain

インラインポリシーは、他のユーザーやグループ、ロールに影響しない独自のポリシーを設定できます。

ロールでどこからのアクセスに対しての許可をするのかも決めます。

f:id:the-casket-of-star:20160325020745p:plain

ロール作成時のロールタイプを選択するときにEC2を選択すれば、EC2からのアクセスを許可することになります。

f:id:the-casket-of-star:20160325021833p:plain

信頼関係タブの信頼されたエンティティに書いてあるドメインがアクセス許可されたサービスを表しています。


管理ポリシーでアクセス許可、インラインポリシーでアクセス拒否の場合 f:id:the-casket-of-star:20160325022305p:plain

管理ポリシーでアクセス拒否、インラインポリシーでアクセス許可の場合 f:id:the-casket-of-star:20160325022332p:plain

つまり、どちらかで拒否してたら、許可してても拒否が優先されます。


AWSを触ってみた① ~ IAM ~

AWSについてきちんと学ぼうということで、書いていきます。

IAM(Identity and Access Management)

f:id:the-casket-of-star:20160323210134p:plain

~ 設定手順 ~

サービスからIAMを選択する。

  1. まずユーザー作成

    左側からユーザーを選択する。

    新規ユーザーの作成をクリックし、ユーザー名を入力し作成。

    ユーザーを選択し、アクセス許可タブのポリシーのアタッチをクリック

    許可したいポリシーを選択し、ポリシーのアタッチをクリック

  2. ロールの設定

    左側からロールを選択する

    新しいロールの作成をクリック

    ロール名を入力

    どこからのアクセスなのかを選択

    ポリシーを選択し次のステップ

    確認画面でロールの作成

  3. パスワードを設定

    ユーザーを指定する

    認証情報タブを選択

    パスワードの管理をクリック

    認証情報のダウンロードをしておく


手順は上記の通りで、 まずAdministratorのポリシーをつけた管理者ユーザー作る。
S3を利用する場合は、S3のみFullAccessポリシーをつけたユーザを作りましょう!

Kerberos

Kerberos 
今回は、ケルベロス認証についてです。

公式はここかな
Kerberos: The Network Authentication Protocol

ケルベロス認証とは、ネットワーク認証方式の1つでありサーバとクライアント間の身元確認のために使用するプロトコルです。
Kerberosはクライアントとサーバとを相互認証できるだけでなくデータ保全のためにクライアントとサーバ間の通信を暗号化します。
現在ではKerberosバージョン 5 が主に使用されています。

www.infraexpert.com

KerberosはWindows Server Active Directoryのユーザ認証の際に使用しているプロトコルだそうです。

ちなみにActive Directoryとは、
Windows Serverの機能の一つで、管理するネットワーク上に存在する様々な資源やその利用者の情報や権限などを一元管理することができるもの
e-words.jp

次の3つがおもな機能です。

  1. ディレクトリサービスLDAP

  2. ユーザー認証(Kerberosバージョン5)

  3. クライアント管理(SMB:ファイル共有)


ようは、LDAPでユーザ情報が格納されてて、Kerberosで認証とアクセス範囲を承認しているわけですね

Kerberosの構成要素として、

  •  KDC ( Key Distribution Center ):サーバとユーザに関する信頼関係の情報を一括管理する中央データベース
  •  AS ( Authentication Server ):認証サーバ。ユーザからの認証を受け付けるサーバ
  •  TGS ( Ticket Granting Server ):チケット発行サーバ。各サーバを利用するためのチケットを発行するサーバ
  •  プリンシパル ( principal ) :KDCが認証を行うユーザやサーバのこと
  •  レルム ( realm ):同じKDCの配下にあるシステムをグループとして定義する論理ネットワーク
    こんなのがあるそうです。

www.infraexpert.com

また、PAMモジュールを使うと、Linuxマシンの認証を外部のKDCにより行えるようにできます。
CentOSなら→ pam_krb5
Debianなら→ libpam-krb5

KDCとしてActiveDirectoryのDomainControllerを指定することで、Linuxマシンの認証がActiveDirectoryに統合されます。

gihyo.jp

RFC 742とRFC 1288

RFC 742


Name/Fingerプロトコル
K. Harrenstien. December 1977

用途は、

ネットワークサイト内の特定コンピュータまたは特定人物のステータスを表示するのに使われる。
ネットワーク内の他のユーザーに関する情報を得たいという要望に応えたものであった。
誰がログインしているかという情報は、その人にどこに行けば会えるかということを判断する材料となる。

Fingerプロトコル - Wikipedia

どういう機能かというと、

Name/Finger プロトコル (FINGER) は、アプリケーション・レベルのインターネット・プロトコルで、finger コマンドと fingerd デーモンの間のインターフェースを提供します。
fingerd デーモンは、現在ログインしているユーザーの情報を、指定されたリモート・ホストへ戻します。 finger コマンドに特定のホストのユーザーを指定して実行すると、そのユーザーに関する詳細情報を入手できます。 FINGER プロトコルは、リモート・ホスト上と要求側ホストに用意しておく必要があります。 FINGER は、伝送制御プロトコル (伝送制御プロトコル) をその基礎となるプロトコルとして使用します。

IBM Knowledge Center



RFC 1288

Finger ユーザー情報プロトコル
D. Zimmerman. December 1991.

仕組みはこんな感じらしい。

  1. Finger はTCPのポート番号79を使う。

  2. ローカルホストがリモートホストのFingerポートに対してTCPコネクションを確立する。

  3. リモートホストでは、そのコネクションの要求を処理するための RUIP (Remote User Information Program) が起動される。

  4. ローカルホストはRUIPにFingerクエリ仕様に基づいた1行のクエリを送信し、RUIPの応答を待つ。

  5. RUIPはそのクエリを受信して処理し、返答し、コネクションをクローズさせる。

  6. ローカルホストは答を受信すると、ローカル側のコネクションのクローズを行う。


[その他の特徴]
サーバ側の実装は fingerd(finger daemon)、クライアント側の実装は name と finger があり、その時点のシステムおよび特定人物に関するステータス情報を人間が読める形式で表示する。
特にフォーマットは決まっておらず、コマンド行1行ぶんの内容をプロトコルの応答として返す。
UNIXUnix系システム、最近のWindowsで実装されている。
このプログラムは、あるユーザーがログインしているか、そのメールアドレス、フルネームなどの情報を提供する。
そのような標準のユーザー情報以外に、そのユーザーのホームディレクトリに .project ファイルや .plan ファイルがあれば、その内容も表示する。

finger コマンド
IBM Knowledge Center

fingerd デーモン
IBM Knowledge Center

Gopher

Gopherってなんだ???

www.keyman.or.jp

e-words.jp

qiita.com

インターネットがテキストベースのネットワークであった当時の情報検索システムだそうです。
コンピュータに置かれたファイルに見出しをつけて階層化し、メニューにしたがって検索が行える仕組み

WWWの普及や、Gopherそのものが日本語などマルチバイト文字環境に対応していなかった為、使われなくなったそうです。

動作的には、
基本は70番ポートでやりとりして、返ってくるのはファイルの階層情報のみ

たったそれだけ~

昔はめっちゃ使ってたのかなぁ・・・

追記:2016/02/19

wired.jp

「アフリカと南極以外のすべての大陸にサーバーが存在している。」
2004年の記事だけど、その時はWWWが登場してもかなりあったってことですね。すげー!