Open33

AWS SAP

takamin55takamin55

AWS SAPをベースにサービスを実際に触ってみながら勉強するよ。

takamin55takamin55

S3のアクセス管理の話

ACLを有効にするかどうかはバケットに対して設定できる。
無効な場合、バケットに対するアクセス許可設定がオブジェクトに適用される。
バケットに対して設定できる基本的なアクセス許可は

  • ブロックパブリックアクセス
  • オブジェクト所有者
  • バケットポリシー
  • アクセスコントロールリスト
    など。

この辺何となくで触っているので整理する。

オブジェクト所有者 と ACL

S3オブジェクトの余裕権を誰が持つか(持つとアクセス権を設定できる)に関する設定。

通常は困らないが、例えばS3バケットに誰でも書き込める設定だった時、別AWSアカウントからアップロードされたオブジェクトは誰のものなのか(アップロードした人が所有権を持ってアクセス権を制御する権限をもつのか、それともそのバケットが存在するアカウントが所有権を持つのか)の管理が必要になる。

それがオブジェクト所有者。デフォルトでは ACL無効(推奨)が設定されていて、この状態であればオブジェクト所有者は「バケット所有者の強制」が選択される。この場合、オブジェクト所有者はバケット所有者 = このAWSアカウント に強制され、仮に別アカウントのユーザがこのS3にオブジェクトをアップロードしてもそれを制御する所有権を持たない。

ACL有効を選ぶと、ACLに従ってオブジェクトの所有者が設定される。
先ほどまではオブジェクトの所有者はこのAWSアカウントだったが、ACLでは5つのグループに従ってオブジェクトの所有権を設定できるようになる。

  • バケット所有者
    • このAWSアカウントのこと。つまりここだけにしか権限を設定しなければ先ほどの「バケット所有者の強制」と同じ状況
  • 全員
    • AWSを持たないユーザも
  • Authenticated Users
    • AWSアカウントは持つすべてのユーザ
  • S3ログ配信グループ
    • これよくわからないね。

ちなみに、ACLを設定していた後にACLを無効化してバケット所有者の強制状態にすると、ACLは無視される。その後ACLを有効化すると復活する。ACLの有効無効でACL設定記述自体が消えるわけではなく、優先されるかどうかの設定にとどまるということ。

プロックパブリックアクセス

先ほどまでACLの話があったが、このパブリックアクセスブロックを使えばパブリックアクセスに関する設定を上書きすることができるというややこしい存在。
ただしありがたい。

公開するつもりがないならとりあえず全ブロックがよい。

有効だと、たとえACLで「全員」に「読み取り」を与えようとしてもブロックされる。

バケットポリシー

ACLとかブロックパブリックアクセスよりも高度なアクセス制御を加える時はこれを使う。
使用例

  • 特定IPからのアクセスのみ許可する
  • HTTPSアクセスを強制する
  • 特定のタグが付いたオブジェクトだけアクセスを拒否する

など。

似たような概念としてIAMポリシーによる制御がある。結局これは主語をどこにするか。IAMリソースに対して権限を管理したいのであればバケットポリシーではなくIAMポリシーを使うべきだし、S3バケットやオブジェクトに対して特殊なアクセス管理をしたい場合はバケットポリシーを使ったほうが良いと思う。

IAMによる権限管理の例

  • 特定のグループに対し、特定のパスに対してのみアクセスを付与する
  • AWSリソースに対してアクセス権限を設定する(IAM Role)

静的ウェブサイトホスティング

アクセス許可タブではなくプロパティタブにある設定。
これを設定すると公開になるわけではなく、ホスティング用のURLを発行してくれるイメージ。

ブロックパブリックアクセスが有効になっていたりすると、たとえこのURLにアクセスしても 403が返る。

takamin55takamin55

IAMのアクセス境界

IAMにはアクセス境界という便利な機能がある。
ようは、「最大この範囲であれば〇〇していいよ」という許可範囲を定義する機能。

例えば IAM RoleやPolicy を作成する権限を与えつつ、そのポリシーの中で特定の権限を許可するのは拒否する、というようなときに使う。

※SCPとの違いは、SCPはアカウント全体に制御が行き渡るのに対し、IAMのアクセス境界はその名の通りIAMをアタッチするエンティティに対してのみ制御が行き渡るので、柔軟。

注意点としては、これはあくまで境界であり、実際に権限が付与されるわけではない。

https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies_boundaries.html

ドキュメントがあった。
アクセス境界は使える場合は、委任を行う時。

特にIAMが1番ユースケースとしてありそう。
「IAMユーザを作成する権限を渡したいけど、どんな権限でもアタッチされるのは困る。特定の権限内に収まるユーザのみを作成する」

これを普通に実現するのは無理。

takamin55takamin55

DynamoDB Accelerator について

通称DAX。
DynamoDBから大量の読み込み処理が必要な際に検討される。

VPC内にキャッシュサーバを立てて、それを例えばEC2などから利用するイメージ。

takamin55takamin55

X-Ray

マイクロサービスのトレーシングサービス。何だかんだ使ったことないので使ってみる。

使ってみた(後で)

"""

takamin55takamin55

リージョン障害時の別リージョン構築

基本的なアプリケーションの構成の場合くらいは押さえておくべきか。大体復元する時はデータをどうするかが問題であって、その他の基盤はTerraformとかCFnでなんとかなる。

EC2について

AMIやEBSをどうやってクロスリージョンでレプリケーションするか。

RDSについて

DynamoDBについて

S3について

バケットの管理のところに「レプリケーションルール」が存在する。
押してみると色々設定できるようだが、バージョニングを有効化していないと使えない。

やってみる

S3 RTCなるものが存在するらしい。

takamin55takamin55

Amazon Transfer Family

全然認知していなかった。軽く調べる。
SFTP, AS2, FTPS, FTPについて。

takamin55takamin55

Athena

S3とAthenaは定番だけどちゃんと触ったことがない。なにかやってみたい。
今日はAthenaを攻めるぞ

https://catalog.us-east-1.prod.workshops.aws/workshops/9981f1a1-abdc-49b5-8387-cb01d238bb78/ja-JP/10-intro

Athenaがどういうサービスなのかは何となく知っているので、ハンズオンをやってみる。
ハンズオンやってみたけどあんまり意味を感じなかった。(ひたすら用意されたクエリを投げるだけで何が起きているのか、そして何をやっているのかがわかりにくい。)

なので自分で触っていくよ。
巨大データは用意しにくいけど、まずは小規模にAthenaを使っていく。

https://docs.aws.amazon.com/ja_jp/athena/latest/ug/understanding-tables-databases-and-the-data-catalog.html

ドキュメントを読もう。Athenaには3つの概念があるみたい。

  • データソース
    • データベースの集合
  • データベース
    • テーブルの集合
  • テーブル
    • いわゆるDBのテーブル形式に整理されたデータ

データソース = 生データか!?と思ったけど違うかもしれない。現状ではなんとも言えない。
CREATE EXTERNAL TABLEコマンドでテーブルを作成していく。EXTERNALが気になるので調べてみると、この iceburgテーブルを作る時以外は全部 EXTERNAL をつけるらしい。
https://aws.amazon.com/jp/what-is/apache-iceberg/

実行。

The bucket specified in the ddl statement does not exist

エラーが出た。コピペしたから失敗。my-regionの部分を自分のリージョンにする。成功!
テーブルは作成できたが、このテーブルに対してのクエリは失敗した。 403 Access Denied なので、AWSが用意したバケットに対してアクセスできないエラー。
どうしようもない。ドキュメント綺麗にしておいてください…。

そういえば、Glue Data Catalogというのがデータソースとして指定されている。
これはAWS Glueの機能(?)で、データのメタデータを管理する機能。

takamin55takamin55

EC2サーバーに対するトラフィックを調査する方法について

どんな方法がある?

takamin55takamin55

RDSやAuroraのデータのクロスアカウントコピーの手段

KMSとか信頼ポリシーが関係するやつ

takamin55takamin55

Elastic IP

自社で使用しているIPをElastic IPに割り当てることも可能っぽい?
Network Load BalancerならEIP割当可能なのことも調べる。

takamin55takamin55

オンプレのサーバーやその他構成をAWSに移行する

CART
AWS SMS
Server Migration Connector
意外と、オンプレサーバーをAWSに移行するのが多いのかもしれない。

takamin55takamin55

不正アクセスをブロックする話

WAF
ACL
Shieldなどのサービスを整理する

takamin55takamin55

Kinesisシリーズの話

Data Firehose
Data Analytics
Data Stream
プライベートサブネットでコンシュームしたい場合のInterface Endpoint

takamin55takamin55

予算の着地見込みの話

AWS Budgetの使い方

takamin55takamin55

複数のAWSアカウントに同じリソースを作る方法

takamin55takamin55

オンプレミスとAWSのハイブリット構成で名前解決を行う

オンプレ→AWS

AWS→オンプレ
の2種類を考える。

takamin55takamin55

複数のAWSアカウントのVPCを接続したい

Transit Gatewayを使ってみる
Enable Accelerationについて

takamin55takamin55

API Gateway

Lambda オーソライザー
Cognito オーソライザー
IAM認証
VPCデプロイ

takamin55takamin55

Direct Connectについて

VPN接続との違いなど

takamin55takamin55

ダイレクトメールの開封率やもろもろを調べたい

というユースケース。ありそう。ドキュメントを読む。

https://docs.aws.amazon.com/ja_jp/ses/latest/dg/faqs-metrics.html
SESを使うと「オープン率」や「リンクのクリック率」を取れる。凄いな。リンクはともかく、オープン率をどうやってやって収集しているかというと、なんとメール本文に超小型の透明画像を配置して、メールを開くとその画像のDLが行われるので分かる、というやり方。凄いなおい。

試しにやってみる。
まずはSESでメールを送れるようにする。
東京リージョンに行き、メールIDを登録する。ドメインは取っているので、DKIMを利用する。
DKIMについてよく分かっていない。また今度調べる。

takamin55takamin55

大容量のデータを転送したいユースケースについて

まとめておくと良さそう

  • Transfer Acceleration
  • Snowball