カテゴリー: aws

AWSの情報をまとめる

  • S3 のバケットを誤って公開した場合の検知方法

    S3 のバケットを誤って公開してしまった時、どのように検知するかをまとめた。

    案は2つ

    1. Lambda を呼び出して、 S3 バケットを保護する CloudWatch Events ルールを設定
    2. S3 のオブジェクトレベルのログを有効にして、 CloudTrail でパブリック読み取りアクセス許可を持つ PutObject API が検出されたとき、 SNS に通知するような CloudWatch イベントを作る。

    この2つの方法は取ることができるが、単純に案1 の s3 から Lambda をトリガーしてチェックを行うのは実装は簡単そう。

    しかし、やろうと思えば案2 の仕組みをつくることもできる。

  • AWS CLI で CloudWatch logs を見る

    CloudWatch logs を確認したいが、AWS コンソール に入らずとも CLI で確認することができる。

    $ aws --profile stg logs get-log-events --log-group-name /ecs/hogehoge --log-stream-name ecs/stream --output text
    
    EVENTS  1628662114657   COPY FROM S3.   1628662110415
    EVENTS  1628662114657   logs ......       1628662111623
    EVENTS  1628662404609   running...................................................................................................................................................................................................................................................................................................      1628662401927
    EVENTS  1628662404609   処理時間:289.469252秒  1628662401927
    

    1行目は EVENTS

    2行目は タイムスタンプ

    3行目にログが記載されている。

    https://docs.aws.amazon.com/cli/latest/reference/logs/get-log-events.html

  • s3 からファイルコピーする際の download: を表示させない

    大量のファイルをコピーしようとすると、標準出力が s3 からdownload しているという標準出力で埋め尽くされる

    % aws s3 cp s3://sumito-hoge/11.change.csv hogehoge
    download: s3://sumito-hoge/11.change.csv to ./hogehoge

    これを表示させないためには --quiet オプションを使う

    % aws s3 cp s3://sumito-hoge/11.change.csv hogehoge --quiet
    
    
    ファイルはきちんとコピーされている
    
    ls -l hogehoge*                                                                                                                        
    -rw-r--r--  1 sumito.tsukada  wheel  5774  8 11 12:40 hogehoge
    

  • 多数のクライアントから EFS を利用する際 性能劣化を回避する

    EFS は

    • 汎用 I/O パフォーマンスモード
    • 最大 I/O パフォーマンスモード

    という2種類のモードがある。

    それぞれ整理する。

    汎用 I/O パフォーマンスモード(General Purpose performance mode)

    EFS のデフォルト値

    レイテンシーが低く、ワークロードがレイテンシーの影響を受けやすい場合に適している。

    Webサーバ含め、一般的なファイルシステムなどレイテンシーに敏感なユースケースに最適。

    最大 I/O パフォーマンスモード(Max I/O performance mode)

    ファイルシステムオペレーションの制限はない。

    多数のクライアントから EFS を利用する際 性能劣化を回避する際はこちらを選ぶ。

    ただし、ファイルのメタデータを操作する際のレイテンシーが若干高くなるというトレードオフがある。

    ユースケースとして、高度に並列化されたアプリケーションやワークロードには、このモードが有効になる。

    参考情報

    https://docs.aws.amazon.com/efs/latest/ug/performance.html

  • S3 で自分の暗号化キーを使ってサーバーサイドエンクリプトをする

    Tips

    自分のキーを持ち込みたい場合、

    SSE-C を使うことで独自の暗号化キーを使うことが可能。

    参考情報

    https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html

  • DDoS 攻撃への対処

    さまざまな対処法がある。

    Amazon Route 53 による制御

    • シャッフルシャーディング
    • anycast ルーティング

    DDoS 攻撃を受けていても連携してエンドユーザーがアプリケーションにアクセスできるようにする2つの機能がある。 

    AWS Shield AdvancedとAWS WAF

    • DDoS攻撃の緩和
    • レイヤー7での保護

    AWS WAF

    カスタマイズ可能なウェブセキュリティルールを定義することで、ウェブアプリケーションに対するどのトラフィックを許可またはブロックするかを制御できる。

    SQL インジェクションまたはクロスサイトスクリプティングに加え、カスタマイズされたルールを使うことができる

    AWS Shield Advanced

    CloudWatch でのリアルタイムの通知によって、DDoS 攻撃に対する完全な可視性が可能になる。

    AWS Shield Standard

    レイヤー3/レイヤー4攻撃を軽減できるが、詳細なリアルタイム通知や可視化機能が提供していない。

  • 誤って割り当てた STS のアクセス権を剥奪するには

    一時認証によって付与されたアクセス権を取り消す方法を考える。

    STSによって間違った権限を付与してしまった場合、

    IAMダッシュボードにおいて、ユーザーに提供した特定のロールを選択し、取り消し設定を利用してSTSの許可ロールを取り消すことができる。

    STSなどの一時的な認証情報をユーザーに付与したとき、ユーザーが長いセッションの有効期間 (12 時間など) を使用して AWS マネジメントコンソール にアクセスできるようにすると、時間内であれば一時認証情報がすぐに期限切れになることはない。

    対処法

    IAMダッシュボードにおいて、ユーザーに提供した特定のロールを選択する。

    取り消し設定を利用して許可ロールを取り消す。

  • オンプレ⇄AWS Storage Gateway 間のセキュアな接続について

    AWS Storage Gateway はCHAPを使用して、ゲートウェイと iSCSI イニシエータの間の認証を行うことができる。

    CHAP を設定するには、AWS Storage Gateway コンソールと、ターゲットへの接続に使用される iSCSI イニシエータソフトウェアの両方で、設定を行う必要がある。

    Storage Gateway では相互 CHAP が使用され、イニシエータがターゲットを認証するときに、ターゲットもイニシエータを認証する。

    セキュアな iSCSI接続を実施するために必要なこと

    • CHAP(Challenge Handshake Authentication Protocol)を構成する
    • その上で、iSCSIとイニシエーター接続を認証する

    iSCSI イニシエーターとは

    iSCSI によって接続された機器に対する指示を出す部分

    参考情報

    https://wa3.i-3-i.info/word12375.html

  • VMware のインスタンスを AWS に移行する

    ダウンタイムを許容する際の移行方法について

    AWS Server Migration Service を使った移行

    AWS Server Migration Serviceを利用して、物理マシンのみならずVMware vSphereインフラストラクチャからAmazon EC2に仮想マシンをインポートすることができる。

    https://aws.amazon.com/jp/server-migration-service/

    AWS Server Migration Service は、短時間で AWS に移行できるサービス。

    ライブサーバーボリュームの増分レプリケーションの自動化、スケジュール設定が可能。

    VMware のインスタンスに対してAWS SMSを利用する際は、AWS Connector for vCenterと言うコネクターを移行対象となるオンプレミス環境のサーバーにインストールする。

    これにより、GUIを使用してVMware vSphereインフラストラクチャからAmazon EC2に仮想マシンをインポートできる。

    1. VMware vCenter から Amazon EC2 に移行する仮想マシンから EC2 インスタンスを起動。
    2. AWS Connector for vCenter を使用して仮想マシンを Amazon EC2 に移行

    と言う順番で行う。

    VM Import/Export を使った移行

    VM を既存の仮想化環境から Amazon EC2 にインポート、それを元の環境にエクスポートすることができる。

    この方法を使うメリットとして、

    • アプリケーションを Amazon EC2 へ移行
    • VM イメージカタログを Amazon EC2 にコピー
    • バックアップと災害対策のために VM イメージのリポジトリを作成できる

    といった点を挙げることができる。

    VM Import ではインポートプロセス中に VM が Amazon EC2 AMI に変換される。

    https://aws.amazon.com/jp/ec2/vm-import/

  • クロスアカウントアクセス

    やりたいこと

    以下の振る舞いを持つ サードパーティの Webアプリケーションを使用する際の制御

    • 自社のAWSアカウント内で実行されている EC2インスタンスへの API コマンドを発行するアクセス権が必要
    • 第三者による目的外利用ができない形式で権限を付与させる

    外部から自社の エンドポイントを叩くユースケースへの対応を考える必要がある。

    クロスアカウントアクセスで考えるポイント

    クロスアカウント許可を設定するIAMロールによって、限定的なアクセスを委任することができる。

    WEBアプリケーションが必要とする権限のみに限定したアクセス権限を付与したIAMポリシーを設定する必要がある。

    それに基づいたクロスアカウントアクセスが可能となるIAMロール(サードパーティ社用のロール)を作成し、該当WEBアプリケーションに設定する流れだ。

    これにより、第三者に資格情報を漏洩することなく、IAMロールの管理によって第三者の情報もコントロールすることができるようになる。

    ユーザーが所有する異なる AWS アカウント にあるリソースへのアクセスを委任する方法としてクロスアカウントアクセス許可とIAMロールの設定がある。

    特定のアカウントにある特定のリソースを別のアカウントのユーザーと共有することができる。

    クロスアカウントアクセスを設定するメリットとして、利用者はアカウントごとに IAM ユーザーを作成する必要がなくなる。

    参考情報

    ちなみに、API Gatewayを使う際、APIリクエストはIAMロールなどの権限がない外部システムやユーザーから実行が可能。

    また、AWS Organizationsはアカウントで IAM ロールを使って、特定のAWSアカウントのリソースへのアクセス権を別の AWS アカウントに付与できる。

    この場合は IAMユーザーを利用するわけではない。