More Related Content
PDF
PDF
Infrastructure as Code (IaC) 談義 2022 PDF
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM) PDF
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier PDF
20200630 AWS Black Belt Online Seminar Amazon Cognito PDF
AWS Black Belt Online Seminar - Amazon Lightsail PDF
PDF
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス What's hot
PDF
AWS Black Belt Online Seminar 2017 Amazon Kinesis PDF
20200212 AWS Black Belt Online Seminar AWS Systems Manager PDF
PDF
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料) PPTX
PDF
20200826 AWS Black Belt Online Seminar AWS CloudFormation PDF
PDF
AWS Amplify - Auth/API Category & Vue 構築ハンズオン PDF
20190319 AWS Black Belt Online Seminar Amazon FSx for Lustre PDF
AWS Black Belt Online Seminar 2016 AWS CloudFormation PDF
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive PDF
Kinesis→Redshift連携を、KCLからFirehoseに切り替えたお話 PDF
20190514 AWS Black Belt Online Seminar Amazon API Gateway PDF
20190206 AWS Black Belt Online Seminar Amazon SageMaker Basic Session PDF
[AWSマイスターシリーズ]Amazon Elastic Load Balancing (ELB) PDF
PPTX
PDF
AWS BlackBelt AWS上でのDDoS対策 PDF
PDF
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk Boto3からの解放。python3の標準ライブラリのみでawsサービスを取り扱うには
- 1.
- 2.
Who am I?
小板橋 由誉 / Yoshitaka Koitabashi
KDDI株式会社 アジャイル開発部 ソフトウェア技術2G
所属チーム
AR/VRなどxR向けの
コンテンツ管理システム(CMS)の開発
好きなAWSサービス
AWS App Runner
- 3.
- 4.
- 5.
Boto3というのは、AWS SDKfor Pythonの別称であり、
Pythonを介してAWSを操作するためのライブラリ
Boto3を入れるのは、簡単でpipでインストールできる
Boto3の由来ちょっと気になって調べてみたら、アマゾン川に生息する
アマゾンカワイルカにちなんでつけたよう
https://github.com/boto/boto3/issues/1023
ドキュメント:
(https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart
.html#installation)
Boto3 is 何?
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
まず、AWSへのAPIリクエストを行う場合
(AWS SDKや、AWSCLIなどのAWSツールを使わない場合)、
リクエストの署名するためのコードを含める必要があります。
基本的には、この署名を気にすることはありません。
AWS SDK、AWS CLIなどのAWSツールは、
ツール設定時に指定するアクセスキーを使用して
APIリクエストに自動で署名します
S3に対するGet処理
- 13.
- 14.
- 15.
リクエストのIDの確認
署名により、有効なアクセスキーを持っている人がリクエストを送信したことを
確認できる
送信中のデータの保護
送信中のリクエストの改ざんを防ぐために、リクエストの要素からハッシュ値を
計算し、得られたハッシュ値をリクエストの一部として含めます。
AWSがリクエストを受け取ると、同じ情報を使用してハッシュを計算し、
リクエストに含まれているハッシュ値と比較します。
ハッシュ値が一致しない場合、AWSはリクエストを拒否します。
=> Canonical Request
この時、HTTP Authorization ヘッダーを使用します。
潜在的なリプレイ攻撃の防止
リクエストに含まれるタイムスタンプの5分以内にAWSに到達する必要がある。
その条件を満たさない場合、AWSはリクエストを拒否します。
セキュリティ確保項目
- 16.
- 17.
- 18.
- 19.
- 20.
Canonical Requestでは、次のStepで署名の検証が行われる。
①: 署名するための文字列を決める。
②: 署名キーを使用して、署名する文字列のHMAC-SHA256ハッシュを
計算する。
③: s3は認証されたリクエストを受信すると、署名を計算しリクエストで
指定した署名と比較する。
そのため、s3と同じ方法で署名を計算する必要がある
=> ここで、署名のために合意された形式でリクエストを送信するプロセスは、
正規化と呼ばれます。
言語化すると
- 21.
- 22.
- 23.
HTTPMethod :GET/PUT/HEAD/DELETE等のHTTPメソッドの1つです。
CanonicalURI : URIのURIエンコードバージョンです。
ドメイン名に続く「/」で始まり、文字列末尾まで、
または疑問符文字( '?')までのすべてを指定します。
CanonicalQueryString : URIエンコーディングされたクエリパラメータを指定します。
CanonicalHeaders : リクエストヘッダーとその値のリストです。
個々のヘッダー名と値のペアは、改行文字( " n")で区切られます。
ヘッダー名は小文字にする必要があります。
また、CanonicalHeadersは下記のものを必ず含めなければなりません。
HTTPホストヘッダー
Content-Typeヘッダーがリクエストに存在する場合は、追加
リクエストに含める予定のx-amz-*ヘッダーも追加。たとえば、一時的なセキュリティ
クレデンシャルを使用している場合は、リクエストにx-amz-security-tokenを含める
必要があります。
Canonical Requestの詳細(説明割愛)
- 24.
SignedHeaders :アルファベット順にソートされたセミコロンで
区切られた小文字のリクエストヘッダー名のリストです。 リスト内のリクエス
トヘッダーは、CanonicalHeaders文字列に含めたものと同じヘッダーです。
HashedPayload : リクエストペイロードのSHA256ハッシュの16進値です。
ちなみに、GETリクエストを使用してオブジェクトを取得する場合、空の文字列ハッ
シュを計算します。
Canonical Requestの詳細(説明割愛)
- 25.
- 26.
②: 署名する文字列を作成
• AWS4-HMAC-SHA256:ハッシュアルゴリズムHMAC-SHA256を
使用していることを示します。
• timeStamp : ISO8601形式の現在のUTC時刻を入れます。
• Scope : 結果の署名を特定の日付、AWSリージョン、およびサービス名を
連結したものを入れます。
結果の署名は、特定の地域および特定のサービスでのみ機能し、
署名は指定された日付から7日間有効です。
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.