😼

疑問解消編②

2024/06/16に公開

お久しぶりです!

オアシステクノロジーズの中村です。

前回に引き続き新しいWebの現場を経験し疑問点がいくらか沸いたので、疑問点や知らない単語をChatGPTに聞いてみた!編Part2です。

今回のトピック

  1. SSO基盤
  2. redis
  3. クラスター

SSO基盤

「SSO基盤ってなんですか?」

ChatGPT君

SSO(Single Sign-On)基盤は、複数のソフトウェアやシステムにおいて、1回の認証操作で複数のサービスにアクセスできる仕組みです。通常、ユーザーは複数のアカウントやパスワードを管理する必要がありますが、SSOを使用すると、1つの認証情報(通常はユーザー名とパスワード)を使用して、複数のサービスにアクセスできます。これにより、ユーザーエクスペリエンスが向上し、セキュリティも強化されます。

「どのような理由でセキュリティが強化されるの?」

SSOによってセキュリティが強化される理由はいくつかあります。

  1. パスワードの利用を減らすことによるリスク軽減: SSOを使用すると、ユーザーが複数のサービスにアクセスするために必要なパスワードの数が減ります。これにより、パスワードの再利用や弱いパスワードの使用などによるセキュリティリスクが減少します。

  2. セキュリティポリシーの一元化: SSO基盤は、一元的な認証と認可のメカニズムを提供するため、セキュリティポリシーの一元化が可能です。管理者は、1つの場所でアクセス権やポリシーを管理し、一貫性のあるセキュリティ対策を実施することができます。

  3. ユーザーの認証情報の保護: SSO基盤は、ユーザーの認証情報を安全に管理するための技術的手段を提供します。多要素認証やシングルサインオンプロトコルによる安全な認証など、さまざまなセキュリティ機能が組み込まれています。

  4. セッション管理の強化: SSOは、セッション管理を一元化し、セッションの有効期限やログアウト機能などを統一的に管理できます。これにより、不正なアクセスやセッションの乗っ取りなどのリスクを軽減します。


    これらの理由により、SSOを導入することでセキュリティが強化され、組織全体の情報セキュリティを向上させることができます。

同じSSO基盤上のシステムなら一つの認識情報だけで色々なサービスを使えるのね~

「SSO基盤はどこで設定するの?」

SSO基盤は通常、組織の内部のネットワークやクラウド環境に設定されます。設定場所や方法は、組織の要件や選択したSSOプロバイダーによって異なりますが、一般的には以下の場所で設定されます。

  1. クラウドベースのSSOプロバイダー: 多くの組織は、外部のクラウドベースのSSOプロバイダーを利用して、SSO基盤を設定します。これらのプロバイダーは、一般的にWebベースのダッシュボードや管理コンソールを提供し、ユーザーアカウント、アプリケーションの設定、セキュリティポリシーの管理などを行うことができます。

  2. オンプレミスのSSOソフトウェア: 一部の組織は、オンプレミスのSSOソフトウェアを使用して、内部のネットワークにSSO基盤を構築します。これらのソフトウェアは、組織のサーバーにインストールされ、ローカルネットワーク内での認証と認可を管理します。


    SSO基盤の設定は、通常、組織のIT部門やセキュリティチームが担当し、適切なセキュリティ構成やポリシーを確立します。設定プロセスには、アプリケーションやサービスの統合、ユーザーアカウントの同期、セキュリティ機能の構成などが含まれる場合があります。

今のシステムはAWSを使用してるのでAWSで設定できるものだと理解!
(インフラほぼ触ったことなし)

「SSOで1つの認証情報から複数のサービスにアクセスできるってことは、一つのSSO基盤を複数のサービスで使いまわすの?」

はい、その通りです。一つのSSO基盤を複数のサービスで使いまわすことができます。SSO基盤は、ユーザーが1つの認証情報(通常はユーザー名とパスワード、あるいは他の認証方式)を入力すると、複数のサービスに自動的にログインする仕組みです。


たとえば、組織内でメールサービス、ファイル共有サービス、カレンダーサービスなどがある場合、1つのSSO基盤を使用してこれらのサービスにアクセスすることができます。ユーザーは1回のログイン操作で、これらのサービス全てにアクセスできます。このため、ユーザーは複数のアカウントやパスワードを覚える必要がなくなり、利便性が向上します。


また、SSO基盤はクラウドベースのプロバイダーを使用する場合、他の組織やサービスとの連携も可能です。つまり、GoogleやMicrosoftなどの大手プロバイダーが提供するSSOサービスを使用することで、そのプロバイダーのアカウントを持つサービスにも簡単にアクセスできます。

今のシステムだと複数のサービスはないからイメージ付かなかったけど、GoogleアカウントでGoogle上の複数サービスを利用できるみたいなことかな?

redis

「redisってなんですか?」

Redisは、オープンソースのキー/値型のデータベースであり、メモリ内データ構造ストアとしても知られています。Redisは、高速で効率的なデータの取得と保存を提供し、さまざまな用途に広く使用されています。


Redisは、以下のような特徴を持っています。

  1. メモリ内データ構造: Redisは、データをメモリ内に格納するため、高速な読み書きが可能です。これにより、リアルタイム性の要求が高いアプリケーションやキャッシュ機構としての使用に適しています。

  2. キー/値型のデータベース: Redisは、データをキーと値のペアとして格納します。これにより、データを高速に取得および更新することができます。

  3. 柔軟なデータ構造: Redisは、文字列、リスト、セット、ハッシュなど、さまざまなデータ構造をサポートしています。これにより、異なる種類のデータを効率的に格納および操作することができます。

  4. パブサブ機能: Redisは、パブリッシュ/サブスクライブ(Pub/Sub)モデルをサポートしています。これにより、異なるプロセスやシステム間でのリアルタイムなメッセージングを実現することができます。

  5. データの永続性: Redisは、データをディスクに永続化する機能も提供しています。これにより、データの永続性と耐久性を確保することができます。


    Redisは、キャッシュ、セッションストア、メッセージキュー、リアルタイム分析、ランキング、キュレーションなど、さまざまな用途に使用されています。

1、2、3までは実装しながら理解してたけど、4と5は初見!

「パブサブ機能をもう少し知りたい」

パブサブ(Publish/Subscribe)機能は、Redisが提供する重要な機能の一つです。これは、メッセージングシステムの一種であり、発行者(Publisher)と購読者(Subscriber)の間でメッセージを配信する仕組みです。


具体的には、次のような特徴があります:

  1. パブリッシュ(Publish): パブリッシャーは、特定のチャンネルにメッセージを発行します。メッセージは、チャンネル名とともに送信されます。

  2. サブスクライブ(Subscribe): サブスクライバーは、特定のチャンネルを購読して、そのチャンネルに送信されたメッセージを受け取ります。複数のサブスクライバーが同じチャンネルを購読することができます。

  3. チャンネル: チャンネルは、メッセージがパブリッシャーからサブスクライバーに送信される経路です。複数のチャンネルを定義して、異なる種類のメッセージを区別することができます。


    パブサブ機能を使用することで、異なるプロセスやシステム間でのリアルタイムなイベント駆動型コミュニケーションを実現することができます。例えば、ウェブアプリケーションでのリアルタイムチャット、イベント通知、およびリアルタイムデータの更新などに使用されます。


    Redisのパブサブ機能は、非同期であり、大規模なメッセージングシステムをサポートします。また、Redisの高速なパフォーマンスと低レイテンシーは、リアルタイムなコミュニケーションやデータ処理において非常に有用です。

ん-、よく分からんな。

LineとかSlackのようにルームの中で1対1のやりとりや複数人とやりとりができる機能を提供してるのか🤔

クラスター

「ITのクラスターとは何ですか?」

ITのクラスターは、複数のコンピューター(ノード)がネットワーク経由で相互に接続され、一つの統合システムとして動作する仕組みです。クラスターは、高可用性、負荷分散、スケーラビリティ、障害耐性などの目的で使用されます。


以下は、クラスターの主な特徴と利点です。

  1. 高可用性: クラスター内の複数のノードが同じサービスやアプリケーションを提供するため、一つのノードが障害やメンテナンスのためにダウンしても、他のノードが引き継いでサービスを提供できます。これにより、システムの可用性が向上します。

  2. 負荷分散: クラスターは、負荷を均等に分散することができます。リクエストや処理の負荷が高い場合、クラスター内のノードに負荷を分散することで、性能を向上させることができます。

  3. スケーラビリティ: クラスターは、ノードを追加することでシステムのスケーラビリティを向上させることができます。負荷が増加した場合やシステムの要求が変化した場合に、必要に応じてノードを追加することで対応できます。

  4. 障害耐性: クラスターは、冗長な構成を持つことができます。そのため、ハードウェアの障害やソフトウェアのエラーが発生しても、システム全体が停止することなく、サービスを継続できます。


    クラスターは、データベース、Webサーバー、アプリケーションサーバー、ファイルシステムなど、さまざまな用途で使用されます。組織やサービスの要件に応じて、適切なクラスター構成が選択されます。

どのようにやってるかは分からないけど、イメージはついた。

「クラスターのイメージを図で示せる?」

                +-----------------+
                | ロードバランサー  |
                +-----------------+
                         |
              +----------+----------+
              |                     |
    +---------+---------+   +--------+---------+
    | クラスターノード 1  |  | クラスターノード 2 |
    +---------+---------+   +--------+---------+
              |                     |
              +----------+----------+
                         |
              +---------------------+
              | データベースサーバー  |
              +---------------------+

この図では、クラスターが複数のノードから構成され、それらの間で負荷が分散されています。クラスターの外部には、ロードバランサーが配置されており、クライアントからのリクエストを適切なノードに転送します。クラスターノードは、特定のサービスやアプリケーションを提供するために構成されています。データベースサーバーは、データの永続性を確保するために使用されます。


このようなクラスター構成では、障害耐性が向上し、負荷分散やスケーラビリティが実現されます。

画像は出力できないけど、図は出力できるのね。

図があるとさらに分かりやすい!

また次回です😌

Discussion