∑考=人

そして今日も考える。

AWSソリューションアーキテクトサマリ1

Markdown記法の慣れとAWSの勉強を兼ねて、学習内容を整理した上でアップしていこうと思う。全4回分ぐらいに分けて投稿する予定。GWは奇跡的に12連休もいただけちゃうのだが、あまりにやることがないので、こんな取り組みをしてみる。今回は第一弾。基本的には下記のテキストを改めてまとめているだけなので、もう少し丁寧に知りたい人は本書を購入されたし。

1. リージョンとAZ(アベイラビリティゾーン)

AZ:物理的なデータセンター郡
リージョン:複数のAZが存在する世界各国の地域
つまり、サーバ<<ラック<<データセンタ<<AZ<<リージョンという包含関係。

AWSのサービスには3つのサービスレベルがある。 特徴および具体例は下記の通り。

サービスレベル 特徴 サービス例
リージョンサービス リージョンごとに作成・管理 S3, DynamoDB, SQS, CloudSearch
AZサービス AZごとに作成・管理 EC2, RDS, ELB, ElastiCache
グローバルサービス どのリージョンからでも共通利用可 IAM, Route53, CloudFront

2. セキュリティモデルとIAM

セキュリティモデル

利用者とAWSが協力することでセキュリティを高める必要がある。(責任分担セキュリティモデル
AWSサービスによって、責任分担範囲が異なる。

サービス形態 利用者責任範囲 AWS責任範囲 サービス例
インフラストラクチャ OS以上のレイヤ・NW・データ・ユーザ 物理層 EC2
コンテナ データ・FW・ユーザ プラットフォーム以下のレイヤ RDS
アブストラク データ・ユーザ・クライアント暗号化 プラットフォーム以下のレイヤ・サーバ暗号化 S3, DynamoDB

IAM

  • ルートアカウント
    アカウント取得時に登録したメールアドレス。全ての操作が可能。
  • ユーザ
    アカウント内に複数作成することが可能。実際の操作はユーザにて実施。
  • IAM
    AWS内のユーザ管理やAWSリソースに対するアクセス制御行う。 IAMグループ・IAMユーザを作成し、IAMポリシーを適用する。 ユーザ<<グループの包含関係。IAMポリシーはどちらに対しても適用可能。拒否が優先される。

  • AWSサービスの利用方法と認証情報

利用方法 手段 認証情報
マネージメントコンソール Webブラウザ ユーザ名/パスワード
AWS CLI コマンドライン アクセスキー/シークレットアクセスキー
AWS SDK プログラム アクセスキー/シークレットアクセスキー

AWS SDKでのアクセスキー/シークレットアクセスキーの利用は推奨されておらず、IAMロールの利用が推奨されている。IAMロールはEC2インスタンスなどに割り当て可能な権限。

  • IAMロールとIAMポリシーの違い
サービス 何に対して付与? どんな権限?
IAMロール AWSリソース(EC2など) AWSリソースへのアクセス権限
IAMポリシー IAMユーザ(IAMグループ) AWSリソースへのアクセス権限

つまり、付与する対象が違うだけ。概念としては、IAMポリシー<<IAMロールの包含関係であり、IAMロールを付与することで、各種AWSサービスに対する複数のIAMポリシーがAWS内部で許可されている。

フェデレーション

IDフェデレーション

AWS以外(自社内)の認証基盤で認証されたユーザに対して、一時的にAWSサービスの利用を許可すること。 全従業員から月末にレポートをアップロードさせるなど、IAMユーザの作成が非効率な場合に利用。 STS(Security Token Service)を利用して実現する。

認証フロー

  1. ユーザが社内のIDブローカー(IDプロバイダー)にアクセス
  2. IDブローカーが社内のIDストア(Active Directoryなど)でユーザ認証
  3. IDブローカーがSTSに対して一時的に認証情報を要求・取得
  4. ユーザが一時認証情報を利用してS3バケットにアップロード

3. VPC

VPC

利用者ごとのプライベートネットワークを構築し、外部ネットワークとの接続を提供する仕組み。Virtual Private Cloud。

VPC構築手順

  1. VPC作成
    • 特定リージョンに対して作成(リージョン跨がり不可)
    • クラスA〜Cのネットワークアドレスを設定
  2. サブネット作成
    • 一つのAZに対して作成(AZ跨がる不可)
    • サーバの機能・役割に応じて分割するのが一般的
    • AZ単位で冗長化するのが一般的
  3. ゲートウェイ作成
    • VPC〜外部NW間の出入り口(以下2種類)
    • VPCにアタッチ
  4. ルートテーブル作成
    • パブリックサブネットとプライベートサブネットを定義
      • パブリックサブネット・・・インターネットアクセス許可
      • プライベートサブネット・・・プライベートアクセス許可
    • VPC内通信はルートテーブルで制御不可(サブネット間通信可)
  5. NATインスタンス作成
    • プライベートサブネットから一時的にインターネットアクセスを可能にするために必要
      • パッチダウンロード
      • リージョンサービスへのアクセス etc
    • パブリックサブネットに作成
    • 送信元/送信先チェック機能を無効化
    • プライベートサブネットのルートテーブルのデフォルトGWにNATインスタンスを指定

EC2のIPアドレス

VPCのFW機能

  • セキュリティグループ
    インスタンスごとのFW。受信(インバウンド)と送信(アウトバウンド)のアクセス制御が可能。
  • ネットワークACL(NACL)
    サブネットごとのFW。

観点別の比較結果は下記の通り。

比較観点 セキュリティグループ ネットワークACL
適用単位 インスタンス サブネット
作成可能ルール 許可のみ 許可/拒否
デフォルトルール インバウンド:全て拒否 インバウンド:全て許可
- アウトバウンド :全て許可 アウトバウンド :全て許可
特徴 ステートフル ステートレス

VPCピア接続

プライベートIPで2つのVPCを接続。双方のVPCにPCX(ゲートウェイに相当)が作成される。 同じリージョン何のVPCしか接続できない。VPCは直接繋ぐ必要がある。