AWSアカウントの初期設定
AWSを使い始めて最初にどこまでやっていればよいか、様々な情報を基に整理しました。
設定項目一覧表
RFC2119のレベル定義に基づいて、様々な情報を基に個人の見解で評価、整理しました。
レベル | 概要 |
---|---|
MUST(REQUIRED, SHALL) | しなければならない |
SHOULD(RECOMMENDED) | する必要がある・推奨される |
MAY(OPTIONAL) | してもよい・選択できる |
SHOULD NOT(NOT RECOMMENDED) | しないほうがよい・推奨されない |
MUST NOT(SHALL NOT) | してはならない |
カテゴリ | サービス名 | 概要 | レベル |
---|---|---|---|
事前準備/設計 | 命名規則 | 命名規則 | SHOULD |
Google Authenticator | アプリ導入 | MUST | |
セキュリティ | AWS IAM(root) | MFA認証設定 | MUST |
アクセスキーの削除 | MUST | ||
AWS IAM | IAMパスワードポリシーの設定 | MUST | |
IAMグループの作成 | MUST | ||
IAMユーザーの作成 | MUST | ||
MFA認証の設定 | MUST | ||
アカウントエイリアスの作成 | MAY | ||
AWS IAM Access Analyzer | 有効化/作成 | SHOULD | |
マネジメントコンソール | IPアドレス制限 | MAY | |
Amazon GuardDuty(有料) | 有効化 | SHOULD | |
S3保護の有効化 | SHOULD | ||
信頼されている/脅威IPリストの作成 | MAY | ||
通知設定 | MAY | ||
S3エクスポート設定 | MAY | ||
AWS Security Hub(有料) | 有効化 | SHOULD | |
通知設定 | MAY | ||
Amazon Detective(有料) | 有効化 | SHOULD | |
Amazon VPC | デフォルトVPCの削除 | MAY | |
契約・コスト | マイアカウント | お支払い通貨の設定 | SHOULD |
秘密の質問の設定 | SHOULD | ||
代替の連絡先の設定 | MAY | ||
デフォルト無効リージョンの確認 | MAY | ||
IAMユーザによる請求情報へのアクセス設定 | MAY | ||
Budgets | 予算アラートの設定 | SHOULD | |
予算レポートの設定 | MAY | ||
AWS Artifact | MAY | ||
AWS Cost Explorer | 有効化 | SHOULD | |
時間単位とリソースレベルのデータの有効化 | MAY | ||
サイズの適正化に関する推奨事項の有効化 | SHOULD | ||
AWS Compute Optimizer | 有効化 | SHOULD | |
AWS Cost Anomaly Detection | 有効化 | SHOULD | |
Billing | Cost and Usage Reportsの有効化 | MAY | |
コスト配分タグの設定 | MAY | ||
PDF請求書の設定 | MAY | ||
無料利用枠の使用アラートの設定 | SHOULD | ||
請求アラートの設定 | MAY | ||
ログ・モニタリング | AWS CloudTrail | 有効化 | MUST |
CloudTrail Insightsの有効化 | SHOULD | ||
Athenaのテーブル作成 | MAY | ||
Amazon EventBridge | マネジメントコンソールのサインイン通知 | SHOULD | |
AWS Config | 有効化 | MUST | |
Configルールの作成 | SHOULD | ||
AWS DevOps Guru | 有効化 | SHOULD | |
Amazon S3 Storage Lens | 有効化 | SHOULD | |
AWS personal Health Dashboard | 通知設定 | SHOULD | |
Trusted Advisor | 通知設定 | SHOULD | |
環境構築時 | Amazon VPC | VPCフローログの有効化 | SHOULD |
Amazon EC2(EBS) | EBSのデフォルト暗号化設定 | MAY | |
Amazon S3 | アカウントのブロックパブリックアクセス設定 | MAY | |
設定手順
- 事前準備
- 命名規則
- Google Authenticatorインストール
- AWSマネジメントコンソールにサインイン
- セキュリティの設定
- ルートアカウントにMFA設定
- ルートアクセスキーの削除
- IAMパスワードポリシー強化
- Security Token Service(STS)を東京リージョン以外は無効
- IAMグループの作成
- IAMユーザーの作成
- アカウントエイリアスの作成
- ルートアカウントをサインアウトしてIAMユーザーに切り替え
- IAM Access Analyzer
- Amazon GuardDutyの設定(有料)
- AWS Security Hubの設定(有料)
- Amazon Detectiveの設定(有料)
- デフォルトVPC削除
- 契約・コストの設定
- マイアカウントの設定
- 支払い通貨をドルから日本円へ変更
- 代替の連絡先を追加
- 秘密の質問の設定
- IAMユーザーによる請求情報へのアクセス許可
- AWSサポートへの加入
- Budgetの設定
- AWS Cost Explorerの設定
- AWS Compute Optimizerの設定
- AWS Cost Anomaly Detectionの設定
- Cost & Usage Reportsの設定
- Billingの設定
- コスト配分タグの設定
準拠法/管轄裁判所の設定(不要)
- マイアカウントの設定
- ログ・モニタリングの設定
- AWS CloudTrailの設定
- マネジメントコンソールのサインイン通知
- AWS Configの設定
- Amazon DevOps Guruの設定
- Amazon S3 Storage lensの設定
- AWS Personal health Dashboardの通知設定
- AWS Trusted Advisorの設定
- その他のセキュリティに関する設定
- VPCフローログ有効化
- Amazon EC2(EBS)のデフォルト暗号化設定
- Amazon S3のブロックパブリックアクセス設定
- WAF
AWSリソースの命名規則をゼロから考えるのは大変なので、serverworks社が公開している命名規則例を利用させていただきます。
AWSリソース | AWSリソースコード | 命名規則 | 例 |
---|---|---|---|
VPC | vpc | vpc-<システムコード>-<環境名>-[任意の値]-[連番] | vpc-sampleapp-prd、vpc-sampleapp-prd-001 |
VPC Endpoint | vpce | vpce-<システムコード>-<環境名>-<用途>-[任意の値]-[連番] | vpce-sampleapp-prd-ssm、vpce-sampleapp-prd-s3-001 |
MFA端末名 | mfa | mfa-<社員番号>-<メールアドレス>-[連番] | mfa-12345-xxxx@example.co.jp、mfa-12345-xxxx@example.co.jp-001 |
VPC Peering | vpcp | vpcp-リクエスタVPC名略称-to-アクセプタVPC名略称-[用途] | vpcpeering-appprd-to-appstg |
VPC Flow Logs | flowlogs | flowlogs-<ログ出力先>-[連番] | flowlogs-s3-001、flowlogs-cwlogs-001 |
VPC Public Subnet | public-subnet | <システムコード>-<環境名>-public-subnet-[任意の値]-AZ名-[連番] | sampleapp-prd-public-subnet-1a、sampleapp-prd-public-subnet-1a-001 |
VPC DMZ Subnet | dmz-subnet | <システムコード>-<環境名>-dmz-subnet-[任意の値-AZ名-[連番] | sampleapp-prd-dmz-subnet-1a、sampleapp-prd-dmz-subnet-1a-001 |
VPC Private Subnet | private-subnet | <システムコード>-<環境名>-private-subnet-[任意の値]-AZ名-[連番] | sampleapp-prd-private-subnet-1a、sampleapp-prd-private-subnet-1a-001 |
VPC Transit Gateway Attachment Subnet | tgw-subnet | <システムコード>-<環境名>-tgw-subnet-[任意の値]-AZ名-[連番] | sampleapp-prd-tgw-subnet-1a、sampleapp-prd-tgw-subnet-1a-001 |
Route Table | rtb | <システムコード>-<環境名>-rtb-{public/dmz/private/tgw}-[連番] | sampleapp-prd-rtb-public、sampleapp-prd-rtb-public-001 |
Internet Gateway | igw | igw-vpc名 ※VPC名はリソースコード以降を記述 | igw-sampleapp-prd、igw-sampleapp-prd-001 |
NAT Gateway | ngw | ngw-{public/private}-AZ名-vpc名 ※VPC名はリソースコード以降を記述 | ngw-public-1a-sampleapp-prd-001、ngw-private-1a-sampleapp-prd-001 |
Security Group | scg | scg-<システムコード>-<環境名>-<役割・用途>-[任意の値]-[連番] | scg-sampleapp-prd-web、scg-sampleapp-prd-web-001 |
Direct Connect Gateway | dxgw | dxgw-<システムコード>-<環境名>-[任意の値]-[連番] | dxgw-sampleapp-prd-tgwconnect-001、dxgw-sampleapp-prd-tgwconnect-001 |
Direct Connect Connection | dxconnecion | dxconection-<システムコード>-<環境名>-[任意の値]-[連番] | dxconnecion-sampleapp-prd-tgwconnect-001 |
Direct Connect VIF | dxvif | dxvif-<キャリア名>-<システムコード>-<環境名>-{public/private/tgw}-[連番] | dxvif-os1-sampleapp-prd-tgw-001、dxvif-attokyo-sampleapp-prd-private-001 |
Transit Gateway | tgw | tgw-<システムコード>-<環境名>-[任意の値]-[連番] | tgw-sampleapp-prd-001、tgw-sampleapp-stg-001 |
Transit Gateway RouteTable | tgw-rtb | tgw-rtb-<システムコード>-<環境名>-[任意の値]-[連番] | tgw-rtb-sampleapp-prd、tgw-rtb-sampleapp-prd-001 |
Transit Gateway Attachment | tgw-att | tgw-att-<システムコード>-<環境名>-[任意の値]-[連番] | tgw-att-sampleapp-prd、tgw-att-sampleapp-prd-001 |
EC2 | ec2 | ec2-<システムコード>-<環境>-[任意の値]-[連番] | ec2-sampleapp-prd-web、ec2-sampleapp-prd-db-001 |
AMI | ami | ami-インスタンスID-取得日時(YYYYMMDDhhmm) | ami-i-xxxxxxxxxxxxxx-202211301330 |
EBS | ebs | ebs-<システムコード>-<環境>-[任意の値] | ebs-sampleapp-prd-web-001、ec2-sampleapp-prd-web-002 |
EBS Snapshot | ebs-snapshot | ebs-snapshot-ボリュームID-取得日時(YYYYMMDDhhmm) | ebs-snapshot-vol-xxxxxxxxxxxxxx-202211301330 |
ENI | eni | eni-<システムコード>-<環境>-[任意の値]-[連番] | eni-sampleapp-prd-web、eni-sampleapp-prd-db-001 |
EIP | eip | eip-<システムコード>-<環境>-[任意の値]-[連番] | eip-sampleapp-prd-bastion、eip-sampleapp-prd-nat-001 |
Key Pair | keypair | keypair-<システムコード>-<環境名>-[任意の値]-[連番] | keypair-sampleapp-prd-bastion、keypair-sampleapp-prd-web-001 |
IAM User(コンソールログイン用) | ー | <社員番号>-メールアドレス | xxxx@example.co.jp |
IAM User(アクセスキー発行用) | ー | secret-<システムコード>-<利用環境>-[任意の値] | secret-sampleapp-poc |
IAM Group | iamgroup | iamgroup-<システムコード>-<用途・役割>-[任意の値] | iamgroup-sampleapp-maintenance、iamgroup-sampleapp-admin |
IAM Role | iamrole | iamrole-<エンティティタイプ>-<システムコード>-<環境名>-[任意の値] | iamrole-custom-sampleapp-prd、iamrole-service-sampleapp-prd-for-ec2 |
IAM Policy | iampolicy | iampolicy-<システムコード>-<環境名>-<権限・用途>-[任意の値] | iampolicy-sampleapp-prd-DenyCreateInstance |
SCP | scp | scp-<役割・用途> | scp-DenyCreateAccessKey、scp-ForceEncryption |
OU | ou | <役割・用途> | SSO、Security、LogIntegration |
AWS Budgets(スタンドアロン) | budgets | budgets-<システムコード>-<期間>-[任意の値] | budgets-sampleapp-monthly-all-resources |
AWS Budgets(Managementアカウント) | budgets | budgets-{OU/アカウントID}-<期間>-[任意の値] | budgets-111122223333-monthly、budgets-SalesOU-monthly |
AWS Budgets Reports | budgets-report | budgets-report-<Budgets名>※Budgets名にはリソースコードは含めない | budgets-report-sampleapp-monthly-all-resources、budgets-report-111122223333-monthly |
Athena(ワークグループ) | workgroup | workgroup-<データソース>-<クエリ実行したいログ種別>-[任意の値] | workgroup-s3-config、workgroup-s3-cloudtrail |
KMS | kms | kms-<AWSサービス名>-[任意の値]-[連番] | kms-guardduty、kms-s3-001 |
Resource Access Manager | ram | ram-<共有サービス名>-[共有リソース名]-[任意の値]-[連番] | ram-tgw |
AWS Backup Plan | backup-plan | backup-plan-<AWSサービス名>-<リソース>-<取得頻度(日)> | backup-plan-ec2-AMI-7、backup-plan-ebs-snapshot-1 |
CloudFormation StackSets | cfn | cfn-<用途・役割>-[任意の値] | cfn-activate-config、cfn-create-basic-config-rules |
S3 Bucket | s3 | s3-<システムコード>-<環境名>-<用途・役割>-アカウントID | s3-sampleapp-prd-cloudtrail-111122223333 |
S3 LifeCycle Rule | s3-lifecycle | s3-lifecycle-<アクション>-<期限日数>-[任意の値] | s3-lifecycle-delete-365、s3-lifecycle-move-365-to-glacier |
CloudTrail | trail | trail-[任意の値]-<用途・役割> | trail-audit、trail-sampleapp-s3-dataevent |
SNS Topic | sns-topic | sns-topic-<用途・役割> | sns-topic-securityhub-notification |
EventBridge Rules | event-rules | event-rules-<用途・役割> | event-rules-securityhub-notification |
EventBus | eventbus | eventbus-<用途・役割> | eventbus-custom-app |
CloudWatch Logs LogGroup | cw-loggroup | /aws/[サービス名]/[リソース名]/[ログ種別] | /aws/ec2/sampleapp-dev-001/app_log |
CloudWatch Logs LogStream | cw-logstream | /[リソース名]/[パス] | /cw-logstream/var/log/messages/ |
ALB | alb | alb-<システムコード>-<環境>-[連番] | alb-sampleapp-prd、alb-sampleapp-prd-001 |
ALB Target Group | alb-tg | alb-tg-<システムコード>-<環境>-<役割>-[連番] | alb-tg-sampleapp-prd-web-001、alb-tg-sampleapp-prd-web-002 |
Config Aggregator | config-agr | config-agr-<用途・役割> | config-agr-org-aggregation、config-agr-regional-aggregation |
Config Rules | config-rules | config-rules-<役割・用途> | config-rules-RestrictedSSHRDPPorts、config-rules-required-tags |
サインアップ時に設定したルートアカウントのEメールアドレスとパスワードでログインします。
MFA(Multi-Factor Authentication)による多要素認証を導入するために、スマートフォンにGoogle Authenticatorを導入します。 Google Authenticator 開発元:Google LLC
AppStore https://apps.apple.com/jp/app/google-authenticator/id388497605
Google Play https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=ja&gl=US
[AWSマネジメントコンソール]→右上の[アカウント]を選択→[セキュリティ認証情報]を選択。
多要素認証(MFA)から[MFAデバイスの割り当て]を選択します。
※既存設定済の割り当てがあるので1行追加されていますが、新規作成時は何も表示されていない
命名規則に従ってデバイス名を設定します。<例. mfa-xxxx@example.co.jp-001>
QRコードを表示を押すとQRコードが表示されるので、Google AuthenticatorでQRコードをスキャンします。表示されたMFAコード(6文字)を入力して、30秒後に更新された次のMFAコード(6文字)を入力します。連続したコードであればどのタイミングのものでもOK。
正常に登録されると以下の通り、デバイスが追加されます。
一度ログアウトすると、ログイン時に多要素認証の画面が追加されるようになります。
rootアカウントのアクセスキーが漏洩してしまうと、rootメールアドレス変更、全ユーザのログインパスワードの改変、AWSアカウントの解約、リソース不正利用によるクラウド破産、機密情報漏洩等のリスクがあり、rootアカウントのアクセスキーはよほどの理由がない限り、存在しない状態が望ましいです。
ルートアクセスキーが存在するか確認しましょう。もしも存在する場合は、[アクション]→[削除]を選択します。
[無効化]してからしか[削除]できないので、[無効化]します。
[無効化]された後に、テキストフィールドにアクセスキーIDを入力して[削除]します。
アクセスキーが削除されているか確認します。
IAM(Identity and Access Management)は、AWS上でユーザーやグループを作成できるサービスです。ここで、設定するパスワードpolicyは、IAMユーザーに対してのみ適用され、ルートアカウントには適用されません。
[アカウント管理]→[アカウント設定]→[パスワードポリシー]の[編集]を選択します。
初期設定では、[IAMのデフォルト]となっています。
必要に応じて各パラメータを設定します。最低12文字以上が推奨されていますが、それ以上にMFAによる多要素認証による防御が最も重要です。
パスワードポリシーが更新されていればOK。
STS(Security Token Service)は、ユーザーに対して AWS ID を定義せずに AWS リソースへのアクセスを許可できる仕組みで、IDフェデレーションが可能となります。
[アカウント設定]→[STS]→[エンドポイント]から東京と大阪以外をすべて[非アクティブ]に設定します。
IAMユーザを作成する際は、IAMグループを作成し、IAMグループに対してIAMポリシーを割り当てるようにします。最初から適切な権限ポリシーのグループを作成するのは難しいので、AWSの標準ポリシーから順次絞っていくことをお勧めします。
最初に管理者用のIAMグループを作成します。[ユーザーグループ]→[グループを作成]を選択します。
グループ名を定義します。(例. iamgroup-administrator-admin)
ポリシーをプロパティまたはポリシー名でフィルタの欄に[AdministratorAccess]でフィルターし、検索リストに出てきた[AdministratorAccess]にチェックして、[グループを作成]を選択します。
グループが作成されたことを確認します。
[ユーザー]→[ユーザーを追加]を選択します。
作成するadmin権限のユーザー名を入力します。(例. mkadmin)
AWSマネジメントコンソールにアクセスできるように、[コンソールアクセスを有効化]にチェックします。
カスタムパスワードで自分で決めたいパスワードを入力して、[次へ]を選択します。
[ユーザーをグループに追加]が選択されていることを確認して、ユーザーグループから先ほど作成したグループ名にチェックを入れて、[次へ]を選択します。
[ユーザーの作成]を選択します。
新規に作成したユーザー用のサインインURL、ユーザー名、パスワードが表示されます。
必要に応じてcsvファイルをダウンロードして安全に保管ください。
ユーザーが正常に作成された場合、ユーザーに表示されます。
管理者権限を持つユーザーであり、MFAを設定しておきましょう。作成したユーザー名を選択します。
作成したユーザーの情報が以下の通り、設定されています。
[セキュリティ認証情報]→[多要素認証(MFA)]→[MFAデバイスの割り当て]を選択します。
ルートアカウント時と同様の手順で設定します。
IAMユーザでマネジメントコンソールにサインインする際、12桁のAWSアカウントIDも入力する必要がありますが、このアカウントIDの代わりに任意の文字列のエイリアスを設定できます。
[IAM]→[ダッシュボード]の右側の[アカウントエイリアス]の[編集]を選択します。
12桁のAWSアカウントIDの代わりに設定したいエイリアスを設定します。
以降は、エイリアスのサインインURLからログインできます。
以降の作業は、IAMユーザーに切り替えて作業を実施していきます。
アカウントを選択して、[サインアウト]を選択します。
上記エイリアスのサインインURLにアクセスすると、すでにアカウントエイリアスが記載された状態でログイン画面に遷移します。設定したユーザー名、パスワード、MFAからログインします。
初回ログイン時は、パスワードの変更が促される画面が表示されます。
外部AWSアカウントやIdP(IDプロバイダー)等に対するアクセス許可状況を確認できるサービスです。意図していない権限を外部エンティティに対して付与していないか無料で確認できるので、設定しておくことをお勧めします。利用するリージョン毎に有効化する必要があるので注意しましょう。
ダッシュボード右上のリージョンを設定したいリージョンに変更しておきます。(例. 東京)
[IAM]→[アクセスレポート]→[Access Analyzer]→[アナライザーを作成]を選択します。
名前を設定して、[アナライザーを作成]を選択します。(例. ConsoleAnalyzer-administrator-ap-northeast-1)
アナライザーが作成完了していればOK。
AWS環境を継続的にモニタリングして不審なアクティビティや脅威を検知してくれるサービスです。
利用するリージョン毎に有効化する必要があるので、注意が必要です。
検知のみで対応は別途対応で、詳細確認したい方は以下のサイトを参考ください。
[検索]にGurdDutyと入力して遷移、利用したいリージョンを確認して、[今すぐ始める]を選択します。
[GuardDutyを有効にする]を選択すると、サービスが開始します。30日は無料トライアル。
初期状態では何も出力されていませんが、不審なアクティビティがあれば検出されていきます。
使用状況を確認することができます。
マルウェアスキャンも利用状態となっています。
設定から[GuardDutyの停止][GuardDutyの無効][ログのS3へのエクスポート]等を設定できます。
信頼されているIPリスト、脅威IPリストを事前に定義しておくことで、精度を向上させることもできます。
S3保護もデフォルトで有効になっています。
EKS Protectionもデフォルトで有効になっています。
Malware Protectionもデフォルトで有効になっています。
RDS保護もデフォルトで有効になっています。
追加したアカウントに対してGuardDutyを適用します。
GuardDutyは、GuardDutyのコンソール90日分表示以降は破棄されていきます。デフォルトでは保存されないため、必要に応じてS3にログを保管します。S3のログは暗号化されて保管されるため、新規にKMSでキーを作成する必要があります。
S3バケットの[今すぐ設定する]を選択します。
先にKMSキーを作成するので、「KMSコンソールに移動して新しいキーを作成する]を選択します。
[キーの作成]を選択します。
デフォルトの設定のまま、[次へ]を選択します。
キーのエイリアスを設定します。(例. kms-guardduty-ap-northeast-1)
キーの管理者権限を設定します。今回は、管理者のユーザーIDを設定します。
キーの使用者権限を設定します。今回は、管理者のユーザーIDを設定します。
デフォルトのキーポリシーでは、GuardDutyのポリシーが定義されていないので、最後に追記します。
以下のコードを追記して、[完了]を選択します。
,
{
"Sid": "Allow GuardDuty to use the key",
"Effect": "Allow",
"Principal": {
"Service": "guardduty.amazonaws.com"
},
"Action": "kms:GenerateDataKey",
"Resource": "*"
}
キーが作成されていればOK。
F5で画面を再読み込みします。キーエイリアスを選択できるか確認下さい。
問題なければS3バケットとして[新しいバケット]を作成、名前をつけます。(例. s3-guardduty-ap-northeast-1-administrator)
[保存]を選択します。
問題なければ、Amazon S3にバケットが作成されています。
AWS Security Hubは、セキュリティのベストプラクティスのチェックを行い、アラートを集約し、自動修復を可能とするクラウドセキュリティ管理サービスです。
AWS基礎セキュリティのベストプラクティスは、AWSの基本的なサービスをカバーできるためお勧めですが、コストが若干高いので注意が必要です。
Security Hubを利用するには、AWS Configの有効化が前提となるので、AWS Configを有効にします。
[検索]に[Config]と入力して遷移、[今すぐ始める]を選択します。
セットアップ画面で、[グローバルリソース(AWS IAMリソースなど)を含める]にチェックを入れます。
S3バケット名を設定します。(例. s3-config-ap-northeast-1-administrator)
[次へ]を選択します。
特に何もチェックしないまま、[次へ]を選択します。
[確認]を選択します。
ダッシュボードが表示されればOK。
[検索]に[AWS Security Hub]と入力して遷移、[Security Hubに移動]を選択します。
[セキュリティ基準]の4つすべてにチェックを入れて、[Security Hubの有効化]を選択します。
[概要]のダッシュボードが表示されていればOK。
セキュリティ基準の設定を変更できます。
インサイトでは、事前に定義されたフィルターもしくは新規にインサイトのフィルターを作成できます。
セキュリティチェックで検出された結果が出力されます。
3rd Party製品やAWSのサービス群と統合管理できます。
追加したアカウントに対してSecurity Hubを適用します。
Amazon Detectiveでは、DutyGuardと連携して潜在的なセキュリティ問題や不審なアクティビティの根本原因を簡単に分析、調査し、素早く特定できます。AWSリソースからログデータを自動的に収集し、機械学習、統計的分析、グラフ理論を使用して、リンクされたデータセットを構築します。
GudarDutyはあくまで脅威検知であり、検出されたイベントにどう対処するかはユーザー側で対応する必要があるので、分析と調査と連動しない手はありません。非常に安い金額で利用できるので、有料ユーザーで管理する場合には利用を推奨します。
[検索]に[detective]と入力して遷移、[開始方法]を選択します。
IAMポリシーは必要に応じてユーザーまたはロールに付与しますが、今回はAdministratorAccessを付与しているので、そのまま[Amazon Detective を有効化]を選択します。
メンバーアカウントが有効になると、GuardDuty の検出結果とリソースを確認できるようになります。
特にアカウント管理で管理アカウントを追加する等なければ、現時点での設定は特に不要です。
概要ページ
検出結果グループ
検索からタイプを選択して指定して実際にはイベントを調査します。
全般の設定画面
詳細設定
使用状況から課金状況を確認
デフォルトVPCを使用して環境を構築するケースはほぼありません。デフォルトVPCを用いてリソースを配置してしまうと、リソースを削除しないと削除できなくなってしまうため、早い段階で削除しておきましょう。
[検索]に[VPC]と入力して遷移します。
[アクション]→[VPC の削除]を選択します。
[デフォルト VPC の削除]を希望することを承認しますにチェックします。
フィールドに、[デフォルト VPC の削除]と入力して、[削除]を選択します。
ほとんどありませんが、デフォルトVPCを復元したい場合、以下の手順で復元可能です。
[アクション]→[デフォルト VPC を作成]を選択します。
[デフォルト VPC を作成]を選択します。
以下の通り、デフォルトVPCが復元されました。
[アカウント]→[ホーム]→[お支払い通貨の設定]から[JPY – Japanese Yen]を選択します。
必要に応じて代替先の連絡先を追加します。rootユーザのメールアドレス以外の連絡先を追加できます。
AWSカスタマーサービスがAWSアカウントの所有者であることを確認するために利用されることがあります。一度設定すると削除はできませんが、変更は可能です。
rootユーザー以外にも請求情報へアクセス権限を付与する場合は、rootユーザーにて以下の設定を追加下さい。
[IAMユーザー/ロールによる請求情報へのアクセス]→[編集]から[IAMアクセスのアクティブ化]をチェック。
AWSサポートプランの管理から遷移できます。デフォルトでは、ベーシックプランとなっており、必要に応じてアップグレードします。
予算の閾値を設定します。閾値に対してアラート送信できます。
予測コストが利用できるようになるまでには約5週間必要です。
[アカウント]→[Budgets]を選択します。
ここでは、月次コスト予算を設定しています。
・テンプレートを使用(シンプル)
・月次コスト予算
・予算名(例. bugets-administrator-monthly-all-resources)
・予算額(例. $75.00)
・Eメールの受信先を設定
予算ルール
予算の履歴と予測を確認できます。
次に、必要に応じてBudget Reportの設定をしていきます。
[Budgets reports]→[予算レポートを作成する]を選択します。
月初め1日から始まるマンスリーレポートを設定します。
・予算レポート名を入力します。(例. budgets-report-administrator-monthly-all-resources)
・予算レポートに含めるコスト予算を選択します。
・レポートの頻度、開始日付、Eメールの受信先を設定します。
予算レポート
AWS Cost Explorerは、実績と予測のコストを可視化するサービスです。APIや一部のオプション機能は有料ですが、基本は無料です。
[Cost explorer]→[Cost Explorer を起動]を選択します。
初めて起動する場合は、コストと使用状況のデータの準備に時間を要しており、24時間後にもう一度アクセスするようにガイドされます。準備できると以下のように現在の利用状況が表示されます。
Cost Explorerでは、サービスごとや日付、リージョン等、詳細な分析が可能です。
定型レポートから分析を確認することも新規にレポートテンプレートを作成することも可能です。
[サイズの適正化に関する推奨事項]は、無料でリソースのサイズに関するアドバイスを受けることができます。前提として、[設定]→[Amazon EC2 リソースの推奨事項を受け取る]にチェックを入れましょう。
AWS Cost Explorerでの詳細な分析をするために、[時間単位とリソースレベルのデータ]にチェックを入れることもできますが、こちらは有料となりますので、必要に応じて設定しましょう。
後程 AWS Compute Optimizerを設定することで、以下の通りサイズの適正化に関する推奨事項を表示してくれます。
[検索]に[Compute Optimizer]と入力して遷移して、[ご利用開始]を選択します。
AWS Compute Optimizerは無料で使えるので、使わないに越したことはありません。
[オプトイン]を選択します。
リソースを使っている場合、最適化された状態か、リソース過多の状況かを自動的に評価してくれます。
必要に応じてアカウントを追加します。
リソースタイプ毎に推奨事項を評価してくれます。
コストの異常を機械学習により検出してくれるサービスです。
[Cost Explorer]→[コスト異常検出]→[ご利用開始にあたって]を選択します。
ここでは、サービス使用履歴パターンに基づいて自動的に調整される設定をします。
・[AWSのサービス・推奨事項]を選択
・モニター名を入力します。(例. budgets-adetection-administrator-all-resources)
・[次へ]を選択します。
アラートの設定をします。
・[新しいサブスクリプションの作成]
・サブスクリプション名(例. administrator)
・アラート頻度(例. 日次の要約)
・アラート受信者のメールアドレス
・閾値(例. $25以上の異常なコスト利用があった際に指定メールアドレスに通知)
・[モニターを作成]を選択します。
モニタリングが設定されました。
コストに関するレポートをCSV形式でS3に保管してくれます。S3に保存したレポートは、AthenaやBIツールを利用して分析できます。コスト配分タグを利用することで、レポートにタグ情報を追加することができます。
[アカウント]→[Cost & usage reports]→[レポートの作成]を選択します。
レポート名を入力して、[次へ]を選択します。(例. costusage-administrator-monthly-all-resources)
新規にs3バケットを作成します。[設定]を選択します。
新規バケットを設定します。
・[バケットの作成]を選択
・S3バケット名を入力(例. s3-costusage-administrator)
・リージョン(例. アジアパシフィック(東京))
・[保存]を選択します。
配信オプションを設定します。
・プレフィックス(例. costusage)
・使用量の時間詳細度(例. 時間別)
・レポートバージョニング(例. 既存レポートを上書き)
・データ統合の有効化は一旦不要で[次へ]を選択します。
問題なければ[レポートの作成]を選択します。
設定が反映されます。
S3バケットから保存先のリンクに遷移できます。
請求書データ(PDFファイル)をメールで受け取ることができます。
[アカウント]→[請求設定]→[PDF 形式の請求書をEメールで受け取る]にチェックを入れる。
AWSでは、AWSリソースに付与することができるメタデータを「タグ」と呼んでおり、何らかの基準・目的に従ってリソースを分類・識別・検索するために使用されます。
現時点では、リソースがないため設定しませんが、今後リソースを利用する際に以下意識してタグを定義しておくと、コスト配分タグの設定がしやすくなります。
コスト配分タグキー | 概要 |
---|---|
Environment | AWSリソースが構築されている環境(本番/検証/開発/DR等) |
Service | AWSリソースが利用されているアプリケーションやシステムを識別 |
DivisionCode | AWSリソースを所有・管理している部署を識別 |
Company | AWSリソースを所有・管理している企業を識別 |
従来、アカウント開設直後は、AWSカスタマーアグリメントの準拠法が米国ワシントン州法になっていましたが、2022年に「Amazon Web Services Japan Godo Kaisha」の場合は、準拠法は日本国法、管轄裁判所は、東京地裁と定められたため、作業は不要となりました。
CloudTrail は、デフォルトで AWS のサービス全体の管理イベントをログに記録し、無料でご利用いただけますが、S3の使用料金が多少発生します。CloudTrail コンソールで CloudTrail を使用すると、追加費用なしでアカウントのコントロールプレーンアクティビティの直近 90 日間の履歴を表示、検索、ダウンロードすることができますが、その他拡張機能は有料です。
[検索]に[CloudTrail]と入力して遷移、[証跡の作成]を選択します。
[証跡名]を入力して、[証跡の作成]を選択します。(例. trail-administrator-audit)
ログ保管先のS3バケットが自動的に生成されています。
ダッシュボードでは、証跡設定を確認できます。
イベント履歴では、90日分のログを確認できます。
CloudTrail Insightsを有効にした場合は利用できます。今回は利用しません。
CloudTrail Lakeを有効にすると利用できます。今回は利用しません。
AWS organizationsによる組織委任管理者を設定できます。
従来マネジメントコンソールへのログインは、バージニア北部リージョンにアクセスされ、ログが記録されていましたが、仕様変更に伴いランダムにリダイレクトされることになりました。
これに伴い、従来バージニア北部のみの設定で可能だったAmazon SNS(Simple Notification Service)とAmazon EventBridgeによるサインイン通知の仕組みでは対応できなくなりました。
CloudTrailのログをCloudWatchに出力し、サブスクリプションフィルターを利用してAWS LambdaでイベントをSNSにパブリッシュする関数を作成、SNSによるEmailに送信する方法を試された方がいらっしゃいます。今回は実装しませんが、必要に応じて設定ください。
AWSリソースに変更があった際に内容を記録し、変更の追跡を行うことができるサービスです。
インシデント発生時の調査等にも役立ちますが、有料です。
今回は、Security Hubを設定しているので、Security Hub関連で利用しているルールがすでに設定されています。ここでは、Security Hub準拠以外の追加ルールは設定しませんので、確認のみです。
[検索]に[config]と入力して、遷移します。Security Hub関連のルールの準拠状況が表示されていました。
コンプライアンスに関連する標準フレームワークから、適合パックをデプロイすることも可能です。
NISTやPCI DSS要件等を満たす必要がある場合は、追加設定します。
Security Hub関連のルールが追加されていることが確認できます。
AWS Configが記録したリソースを検索できます。
サンプルクエリ、または独自の新しいクエリで抽出することも可能です。
設定でサービスをオフにする等、変更可能です。
Amazon DevOps Guruは、「アプリケーションの運用パフォーマンスと可用性を簡単に向上させる、機械学習 (ML) を利用したサービスです。DevOps Guru は、通常の運用パターンから逸脱した動作を検出するため、顧客に影響を与える前に迅速に運用上の問題を特定できます。」(公式引用)
- ログ・モニタリングの設定
- AWS CloudTrailの設定
- マネジメントコンソールのサインイン通知
- AWS Configの設定
- Amazon DevOps Guruの設定
- Amazon S3 Storage lensの設定
- AWS Personal health Dashboardの通知設定
- AWS Trusted Advisorの設定