SEC 2: ユーザー ID とマシン ID はどのように管理したらよいでしょうか?

安全に AWS ワークロードを運用するアプローチには、管理する必要があるアイデンティティが 2 種類あります。管理およびアクセス権を付与する必要があるアイデンティティのタイプを理解することで、適切な ID が適切な条件下で適切なリソースにアクセスできるようになります。ユーザー ID: 管理者、開発者、オペレーター、エンドユーザーは、AWS 環境とアプリケーションにアクセスするために ID を必要とします。これらの者は、あなたの組織のメンバー、または共同作業を行う外部ユーザーで、ウェブブラウザ、クライアントアプリケーション、またはインタラクティブなコマンドラインツールを介して AWS リソースを操作する人たちです。マシン ID: サービスアプリケーション、運用ツール、およびワークロードには、たとえばデータの読み取りを行うために、AWS のサービスにリクエストを送るための ID が必要です。このような ID には、Amazon EC2 インスタンスや AWS Lambda 関数など、AWS 環境で実行されているマシンが含まれます。また、アクセスを必要とする外部関係者のマシン ID を管理することもできます。さらに、AWS 環境にアクセスする必要があるマシンが AWS 外にある場合もあります。

リソース

Mastering identity at every layer of the cake
Managing user permissions at scale with AWS SSO
Best Practices for Managing, Retrieving, and Rotating Secrets at Scale
IAM Best Practices
The AWS Account Root User
Getting Started with AWS Secrets Manager
Temporary Security Credentials
Identity Providers and Federation
Security Partner Solutions: Access and Access Control

ベストプラクティス:

改善計画

強力なサインインメカニズムを使用する

  • MFA サインインを強制する IAM ポリシーを作成する: ユーザーが [My Security Credentials] ページでロールを引き受け、自分の認証情報を変更し、MFA デバイスを管理できるようにするものを除いて、すべての IAM アクションを禁止するカスタマー管理 IAM ポリシーを作成します。
    https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_users-self-manage-mfa-and-creds.html#tutorial_mfa_step1
  • ID プロバイダーで MFA を有効にする: 使用する ID プロバイダーまたはシングルサインオンサービス (AWS Single Sign-On (SSO) など) で MFA を有効にします。
    https://aws.amazon.com/iam/details/mfa/
  • 強力なパスワードポリシーを設定する: IAM やフェデレーテッド ID システムで強力なパスワードポリシーを設定し、総当たり攻撃から守ります。
    http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_passwords_account-policy.html
  • 認証情報を定期的にローテーションする: ワークロードの管理者が、パスワードとアクセスキー (使用されている場合) を定期的に変更するようにします。
    Rotate credentials regularly
  • 一時的な認証情報を使用する

  • 最小権限ポリシーを実装する: IAM グループおよびロールに最小権限のアクセスポリシーを割り当てて、定義したユーザーのロールまたは機能を反映します。
    Grant least privilege
  • 必要でないアクセス許可を削除する: 不要なアクセス許可を削除して、最小権限を実装します。
    Reducing policy scope by viewing user activity
    View role access
  • アクセス許可の境界を考慮する: アクセス許可の境界は、アイデンティティベースのポリシーが IAM エンティティに付与できるアクセス許可の上限を設定する管理ポリシーを使用するための高度な機能です。エンティティのアクセス許可の境界では、アイデンティティベースのポリシーとそのアクセス許可の境界の両方で許可されているアクションのみを実行できます。
    Lab: IAM permissions boundaries delegating role creation
  • アクセス許可のリソースタグを検討する: タグを使用して、タグ付けをサポートする AWS リソースへのアクセスを制御できます。また、IAM ユーザーとロールにタグ付けして、ユーザーがアクセスできる内容を制御することもできます。
    Lab: IAM tag based access control for EC2
    Attribute-based access control (ABAC)
  • シークレットを安全に保存して使用する

  • AWS Secrets Manager を使用する: AWS Secrets Manager は、機密情報の管理を容易にする AWS のサービスです。シークレットとは、データベース認証情報、パスワード、サードパーティ API キー、任意のテキストなどです。
    AWS Secrets Manager
  • 一元化された ID プロバイダーを利用する

  • 管理アクセスを一元化する: IAM ID プロバイダーエンティティを作成して、AWS アカウントと ID プロバイダー (IdP) の間に信頼関係を確立します。IAM は、OpenID Connect (OIDC) または SAML 2.0 (Security Assertion Markup Language 2.0) と互換性のある IdP をサポートします。
    Identity Providers and Federation
  • アプリケーションアクセスを一元化する: アプリケーションアクセスを一元化するために Amazon Cognito を検討します。ユーザーのサインアップやサインイン、アクセスコントロールをモバイルアプリやウェブアプリに簡単に追加できます。Amazon Cognito は、数百万人のユーザーにスケールし、Facebook、Google、Amazon などのソーシャル ID プロバイダー、SAML 2.0 を介したエンタープライズ ID プロバイダーによるサインインをサポートします。
    Amazon Cognito
  • 古い IAM ユーザーとグループを削除する: ID プロバイダー (IdP) の使用を開始したら、不要になった IAM ユーザーとグループを削除します。
    Finding unused credentials
    Deleting an IAM group
  • 定期的に認証情報を監査およびローテーションする

  • 認証情報を定期的に監査する: 認証情報レポートと IAM Access Analyzer を使用して、IAM 認証情報とアクセス許可を監査します。
    IAM Access Analyzer
    Getting credential report
    Lab: Automated IAM user cleanup
  • アクセスレベルを使用して IAM アクセス許可を確認する: AWS アカウントのセキュリティを向上させるには、各 IAM ポリシーを定期的に確認してモニタリングします。ポリシーが、必要なアクションのみを実行するために必要な最小権限を付与していることを確認します。
    Use access levels to review IAM permissions
  • IAM リソースの作成と更新の自動化を検討する: AWS CloudFormation を使用すると、テンプレートを検証してバージョンを管理できるため、ロールやポリシーを含む IAM リソースのデプロイを自動化して、人為的ミスを減らすことができます。
    Lab: Automated deployment of IAM groups and roles
  • ユーザーグループと属性を活用する

  • AWS Single Sign-On (SSO) を使用している場合は、グループを設定します。: AWS SSO では、ユーザーのグループを設定し、必要なレベルのアクセス許可をグループに割り当てることができます。
    AWS Single Sign-On - Manage Identities
  • 属性ベースのアクセスコントロール (ABAC) について: 属性ベースのアクセスコントロール (ABAC) は、属性に基づいてアクセス許可を定義する認証戦略です。
    What Is ABAC for AWS?
    Lab: IAM Tag Based Access Control for EC2