AWSアカウントへのアクセス方法

(Nicolo Marchesi)(2020年12月3日)

AWSアカウントにアクセスする方法

こんにちは。最初のAWSアカウントを作成したばかりです。次の大きなものの構築を開始するために、AWSが提供するすべてのエキサイティングなサービスとテクノロジーに飛び込むのが待ちきれません。しかし、ちょっと待ってください…rootアカウントの資格情報でログインしますか?それとも、新しいユーザーを生成する方が良いですか?または、役割を使用しますか?

少し遅くして、ブログ投稿の終わりまでに、最良の方法を選択できるようになることをお約束しますAWSアカウントに安全にアクセスするには

ただし、次回はマルチアカウント戦略について説明するため、単一のawsアカウントへのアクセスを検討します。 。実行する前に歩く必要がありますか?

アカウントとリソース

AWSでの信じられないほどの旅は、アカウントとリソースから始まり、アカウントはまるで空のボックスのようです。

アカウント内に配置できるものは、ネットワーク、仮想マシン、コンテナなど、AWSのサービスに関連するものであれば何でもかまいません。

しかし、最も重要な部分はそれです。デフォルトでは、どのアカウントもリソースを共有しないため、2つの異なるAWSアカウント間で何も出入りできません。そして、これはワークロードを分割し、適切な人だけがすべてにアクセスできるようにするのに最適です。

IAM — ID &アクセス管理

各アカウント内で、IAMは、どのエンティティがそれらのリソースに対していくつかのアクションを実行できるかを管理することにより、アカウント内のリソースを保護します。

  • WHO —どのID
  • 何—いくつかのアクションを実行できます
  • 場所—一部のリソース
  • 方法—そしていくつかの条件を満たす

これらを

4W 、そして今のところ、最初の3つだけに焦点を当てる必要があります。

最初は—rootユーザー

AWSアカウントの作成後にログインしたときは、そのアカウントを使用しました root user

これは、次の理由で作成できる他のパスワードとは異なります。

  • アカウント登録時に作成
  • あなたアカウントの作成に使用したメールアドレスとパスワードを使用してサインインできます
  • 請求情報にアクセスできます

  • アカウント内のすべてのリソースに無制限にアクセスできます

このユーザーは非常に重要であり、できる限り最善の方法で保護する必要があります。ステロイドのスーパーアドミニストレーターです。請求情報を表示できるだけでなく、すべてのリソースですべてを実行できるためです。

したがって、最初に行うべきことは次のとおりです。

  • 多要素認証(MFA)を有効にし、QRコードを安全な場所に保存します
  • このユーザーに関連するすべてのアクセスキーを削除して、プログラムによるアクセスを無効にします(とにかくこれは必要ありません!)

次に、このアカウントに今後どのようにアクセスするかを決定する必要があります。

AWSの内部から

ここでは、サードパーティに依存せずにAWSが提供するものに焦点を当てましょう。これは、ユーザー、グループ、ロールの3つのIAMビルディングブロックをマスターする必要があるため、この単一のアカウントに焦点を当てる場合に特に役立ちます。

ユーザー

rootユーザーを覚えていますか? IAMユーザーは同じタイプのエンティティですが、rootユーザーとは異なります。デフォルトの請求権限と管理者アクセス権はありません(指定しない限り…許可しないでください)。

ユーザーを使用して、AWSウェブコンソールにログインできるエンティティを作成できます。または、固定されていて時間の経過とともに変更されない一連の認証情報(アクセスキーとシークレットアクセスキー)を介したプログラムによるアクセス。 AWSCodeCommitのSSH / HTTPSキー、またはAmazonキースペースの認証情報(Apache Cassandraの場合)

  • Webコンソールのサインイン認証情報
  • アクセスおよびシークレットキーの認証情報API、CLI、SDKのプログラムによるアクセス用
  • AWSCodeCommitのSSH / HTTPSキー
  • Amazonキースペースの認証情報(Apache Cassandraの場合)

グラニュラーアクセス

IAMユーザーは、ユーザーの行動に応じて1つ以上のアクセスキーを有効にすることができます。例:

  • プログラムによるアクセスを必要とせずに、ウェブコンソールで分析のみをチェックする必要があるデータアナリスト
  • サーバーレスDevOpsでアクションを実行する必要があるコンソールを使用してCLIを使用して一部のリソースを提供するには、これらの両方のアクセスが必要になります
  • 単一のリポジトリで作業し、AWSリソースとやり取りする必要がない開発者は、AWSCodeCommit用のSSH / HTTPSキーを持ちます。

共有

IAMユーザー認証情報

( 1–5)それぞれに関連付けられた正確なアクセス許可を使用すると、IAMユーザーは初期構成とコンソールアクセスにかかる時間を節約できます。 静的な資格情報

はセキュリティ上の重大な問題であるため、細心の注意を払って処理してください。または、AWS CLIのget-session-tokenを使用して、静的な認証情報から一時的な認証情報を生成します。

グループ

エンティティ自体ではありませんが、IAMグループはIAMユーザーをバンドルするためにありますユーザーのグループに同じ権限のセットを付与します。これにより、IAMユーザーのエッジが少し滑らかになりますが、IAMユーザーに見られたのと全体的に同じことが当てはまります。

IAMユーザーは、関連付けられている間も個人ポリシーを保持できることを覚えておいてください。グループを使用すると、結果として得られるアクセス許可は、グループと個人のアクセス許可のマージに等しくなります。

これは、通常のワークフローよりも例外です。個別の権限が多すぎると、メンテナンス不可能なポリシーが多数作成され、アカウントの権限の全体的な概要が失われます。

いつ使用するか

少数のユーザー

(5〜15)、IAMグループは、各IAMユーザーの管理と構成の手間を省くことができます。ただし、IAMユーザーと同じ考慮事項が適用されるため、単一のアカウントで作業している場合を除いて、可能であればそれらを避けてください。

役割

ここでは、AWSの役割について説明します。 IAMロールは、(ユーザーと同じように)アクセス許可を持ち、(ユーザーと同じように)コンソールにログを記録できます。 1人のユーザーに一意に関連付けられる代わりに、それを必要とする人は誰でも役割を引き受けることができます

が引き受けたい役割のキャップ

を着用し、

IAM役割のロゴ

一時的な認証情報

IAMユーザーとのもう1つの重要な違いは、IAMロールには静的な認証情報がないことです。誰かが役割を引き受けると、一連の一時的な資格情報

が生成され、与えられます。これらの資格情報の存続期間をカスタマイズし、必要に応じてアクセスをさらに制限することができます。

時間は900秒(15分)から最大12時間まで設定できますが、私の意見では、1時間に設定します-有効期限が長いことは、セキュリティとパフォーマンスの間の最良のトレードオフです。

CloudTrailモニタリング

何を監査できないと考えて役割を使用しない人もいるため、これについて説明します。役割ができる。真実はあなたができるということです、そしてあなたはそうすべきです。 Cloudtrailモニタリングを有効にすると、アカウント内で実行されたすべてのアクションを確認できるため、何が起こっているかを常に知ることができます。

クロスアカウント

これについては、別のブログで詳しく説明します。単一のアカウントに焦点を当てているため、投稿しますが、今のところ、IAMロールを使用して他のIAMロールまたはIAMユーザーにアクセスできることに注意してください。

これは非常に便利です。

エントリポイントが必要です

そして今は欠点があります。残念ながら、コンソールへの直接アクセスとIAMロールへの一時的な認証情報を与えることはできません。まず、IAMロールへのアクセスを許可するために、ユーザーまたはフェデレーションロール(これについてはいくつかの段落で詳しく説明します)を設定する必要があります。

いつ使用するか

常に。

IAMの役割が静的な認証情報に縛られていないため、クラウドにアクセスするための最良の方法になります。それらをIAMロールのアクションを監視し、MFAを使用してもセキュリティを強化する機能と組み合わせます。唯一の欠点は、構成が少し多いことですが、私の意見では低価格です。

AWSの外部から

それでは、次の場合に何ができるかを見てみましょう。コーポレートアイデンティティの分野に入る。 IDプロバイダーをIDソースとして使用し、会社の電子メールとパスワードを使用してログインすることを指します。

フェデレーション

しかし、フェデレーションとはどういう意味ですか?一方には、IDプロバイダーがあります。これらのシステムには、ユーザーのディレクトリと、特定のフェデレーションプロトコルを介して通信できるいくつかのソフトウェアが含まれています。ユーザーのすべてのデータは

アイデンティティ

として存在します。

反対側には、AWSがありますアイデンティティコンシューマー

としてアカウントを作成します。 IDを保存せずに、IDへの参照を維持します。この面では、通常、よりきめ細かい認証レベルがあります(ありがとう、IAM!)。

したがって、フェデレーション

は、IDコンシューマーがIDプロバイダーのIDを参照できるようにする信頼関係です。

SAMLフェデレーション

セキュリティアサーションマークアップ言語(SAML)の最も一般的な定義)は、当事者間で認証および承認データを交換するためのオープンスタンダードです。これは、IDを使用してAWSにログインし、ロールを引き受けることで一時的な認証情報を取得できることを意味します。これは、ほぼすべてのIDプロバイダーに適用できる一般的なアプローチです。

信頼関係

2つのパーティ間のフェデレーションを設定するには、

IAMアイデンティティプロバイダー

。これは、実際のIDプロバイダーを表し、2つのパーティが通信できるようにする共有シークレットを保持しているために必要です。さらに、ユーザーに引き受けてもらいたい各ロール内で、信頼ポリシー

を定義して、IAMに関連するエンティティを許可します役割を引き受けるIDプロバイダー:

カスタム管理

重要なのは、フェデレーションを自分で管理することは、最初は困難で時間がかかる可能性があるということです。よく理解するためのいくつかの概念があり、これを実現するには、一連のエンティティ、関係、およびカスタムのものを作成する必要があります。アイデアを得るには、完全なチュートリアルの例をここで見つけることができます。

いつ使用するか

一般的に、これは、ほとんどすべての場合に機能する、優れた、戦闘でテストされたアプローチです。それでも、IDのカスタム管理は、経験の浅い人にとっては困難で時間がかかる可能性があります。

一般的なユースケースは、セキュリティまたはコンプライアンスの目的でこれを自分で管理する場合です。 AWS組織にアクセスできないか、AWSSSOがまだIDプロバイダーをサポートしていません。

AWSSSO

これは、クラウドベースのマネージドSSOサービスです。 IDプロバイダーをAWSアカウントに接続します。

AWS組織

AWSSSOを設定するには、AWS組織を構成する必要があります。今のところ、次のように考えることができます。複数のAWSアカウントを管理します。簡潔にするために、AWS組織の設定には広範なアクセス許可(つまりrootユーザー)が必要であることを知っておく必要があります。

内部IDストレージ

デフォルトでは、AWSSSOはディレクトリを提供しますIDプロバイダーとして直接機能するユーザー情報と認証情報を保存します。 IDプロバイダーをまだ持っていない場合や、IDプロバイダーをセットアップする手間をかけたくない場合に最適です。

外部IDストレージ

ただし、組織ですでにIDプロバイダーが使用されているとします。 Microsoft ActiveDirectoryなどのユーザーディレクトリ。その場合は、AWS SSOに接続できるため、自動プロビジョニング

を使用して2つの異なるディレクトリを維持する必要がなくなります。

ただし、この機能は限られたIDプロバイダーのセットでのみサポートされていることに注意してください:

多要素認証

AWS SSOを使用すると、サービス内のユーザー用にMFAデバイスを設定できます。現在、GoogleAuthenticatorなどのAuthenticatorアプリとYubikeyなどのセキュリティキーをサポートしています。内部ソリューションはエキサイティングですが、外部IDプロバイダー側​​でセットアップした場合はMFAサポートが不足します。

いつ使用するか

これはAWSによって提案された標準であり、続行する方法がわからない場合のデフォルトの方法です。それでも、このソリューションを最大限に活用するためにチェックする必要のある要件が少なくとも2つあります。

AWS組織

ルートアカウントにアクセスできます。 IDをAWSSSO内に保持するか、自動プロビジョニングでサポートされているIDプロバイダーを使用する必要があります。

最後の注意事項

そこで、単一のAWSアカウントにアクセスするための基盤を示しました。これで、特定のユースケースに最適な方法を選択するための要素が必要になります。これを使用して、次のブログ投稿でマルチアカウント管理とAWS組織の基礎を説明します。

Leapp

最後の注意として、次のツールを使用することを強くお勧めします。 AWSアカウントへの接続に必要なすべてのデータを保存するのに役立ちます。私のチームと私は、これらすべてのユースケースをサポートするオープンソースツールを開発しているので、お気軽にチェックしてください:

Noovolari / leapp

Leappは、クラウドにアクセスするための日常の仲間です。クラウドプロバイダーのAPI、CLI、SDKと連携するように設計されています。それは…

github.com

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です