Skip to main content

 

 

 

 

Template:OutSystems/Documentation_KB/Breadcrumb_New_Layout

 

 

Template:OutSystems/OSLanguageSwitcher

 

 

 

OutSystems

ライフサイクル管理とデータ保護

この記事では、OutSystemsシステムのアプリケーションがどのような個人データを収集し、どこに保管するかを説明し、その個人データを難読化または削除する方法についての例を紹介しています。

個人データには、私生活や仕事、一般生活関連など直接または間接的に個人を特定できる情報がすべて含まれています。氏名、写真、メールアドレス、住所、ユーザー名、コンピュータのIPアドレスなどがあります。

Service CenterとLifeTime{ #service-center-and-lifetime }

ITユーザー管理

Service CenterとLifeTimeはどちらもOutSystemsの管理コンソールで、ITユーザーの管理を行います。 LifeTimeが利用できない場合、Service CenterがITユーザーの作成・管理を行います。LifeTimeが利用可能な場合は、LifeTimeでこの管理を実行します(Service Centerをバックグラウンドで使用)。

ITユーザーを管理するため、Service CenterとLifeTimeは、Userシステムエンティティ(物理テーブル名: ossys_User)にユーザーごとに以下の情報を保存しています。

  • 氏名(Joel Grantなど)
  • ユーザー名(Firwassなど)
  • モバイル端末[Service Center専用](414-382-6132など)
  • メールアドレス(JoelGrant@rhyta.comなど

総当たり攻撃からの保護

Service CenterおよびLifeTimeには、ユーザーパスワードの体系的な推測を試みる総当たり攻撃から保護するシステムが用意されています。

このシステムでは、ユーザーレベルの攻撃とIPレベルの攻撃の2段階の攻撃に対する保護を提供しています(詳細については、「こちら」をご覧ください)。保護が機能するためには、ユーザーの一部の個人データを保存する必要があります。LoginAttemptシステムエンティティには、以下の個人情報が保存されています(物理テーブル名: OSSYS_LOGIN_ATTEMPT)。

  • ユーザー名(Firwassなど)
  • IPアドレス(69.89.31.226など)

LifeTimeの監査イベント

LifeTimeには、インフラでITユーザーが実行した操作をすべてログに記録する監視システムが組み込まれています。これらのログは、[Applications]画面、[Deployment Plans]画面、[Users]画面、[Teams]画面、[Roles]画面で実行された操作に関連するものです。

上記のログには、ユーザーの氏名やユーザー名、ならびにクライアントのIPなどの個人情報も一部含まれる場合があります。個人情報は、MessageアトリビュートとClientIPアトリビュートのAuditEventエンティティ[OSLTM_AUDITEVENT]に保存されます。

パフォーマンス上の理由から、LifeTimeは1年以上古い監査ログを削除します。デフォルトでは、この削除プロセスは毎日午前7時30分(データベース時間)に実行されます。

LifeTime Analytics

LifeTime Analyticsを使用して、アプリケーションに関するパフォーマンスレポートを自動的に構成できます。このレポートは、登録されたユーザーまたは特定のメールに送信できます。

この連絡先リストは、LifeTimeAnalyticsモジュールのPerformanceReportConfigurationエンティティのプラットフォームデータベースに保存されています(物理テーブル名: OSLTM_REPORTCONF)。

メール

OutSystemsにはWebアプリケーションからメールを送信する機能があります。この仕組みで必要とされるメタデータには、ユーザーに関連する個人情報が含まれる場合があります。 ユーザーデータはメールを送信するために必要ですし(メールアドレス)、メールの内容自体にも含まれる場合があります。

このデータはすべて次のシステムエンティティに含まれます。Sent_Email(物理テーブル名: OSSYS_EMAIL)およびEmail_Content(物理テーブル名: OSSYS_EMAIL_CONTENT)。

ログ

Service Centerでは、ユーザーのログイン情報をGeneralログに記録します。これらのログの形式は以下のとおりです。

Login (user: '<ユーザー名>').

この情報は、すべてのGeneralログテーブル(oslog_General_0oslog_General_1oslog_General_2、 …)に含まれる場合があります。

ユーザー

Usersは、エンドユーザーを管理するために使用されるデフォルトのアプリケーションです。このアプリケーションは、「[Service Center]セクションと[LifeTime]セクション」に記載済みのユーザー関連情報と同じ情報を使用します。具体的に以下の情報です。

  • 氏名(Joel Grantなど)
  • ユーザー名(Firwassなど)
  • モバイル端末(414-382-6132など)
  • メールアドレス(JoelGrant@rhyta.comなど

この情報が保存されているエンティティは、Service CenterとLifeTimeで使用されているのと同じエンティティ(Userシステムエンティティ)ですが、使用するテナント識別子は異なります。

また、Usersでは、上記の総当たり攻撃に対する保護システムを使用しています。そのため、このシステムには以下の個人ユーザー情報が保存されています。

  • ユーザー名(Firwassなど)
  • IPアドレス(69.89.31.226など)

Usersは別のエンティティ、つまりUsersモジュールのLoginAttemptエンティティ(物理テーブル名: OSUSR_<PREFIX>_LOGINATTEMPT)を使用してこの情報を保存します。

注記: Usersをコピーして、ユーザープロバイダを新規作成した場合、同じメカニズムをご利用のユーザープロバイダで使用できます。

アプリのフィードバック

アプリのフィードバックは、ユーザーのフィードバックを収集するシステムアプリケーションで、ユーザーがモバイルアプリケーションやWebアプリケーションを使用しながら、入力したフィードバックや口頭のフィードバックを共有できるようにすることでこれを行います。 また、フィードバックを送信すると、その瞬間のユーザー画面の表示内容のスクリーンショットがツールによって取得されます。 そのため、アプリケーションのタイプによっては機密情報が取得される可能性があります。

たとえば、ユーザーがディレクトリタイプのアプリケーションを使用していて、連絡先リスト画面のフィードバックを送信する場合、その瞬間に一覧表示されたすべての連絡先が、スクリーンショットまたはHTMLコードとしてツールによって収集されます。その結果、一部の個人情報がApp Feedbackデータベースに保存されることがあります。

このデータは、ECT_Providerモジュールの以下のエントリの以下のアトリビュートに保存されるている可能性があります。

  • Feedbackエンティティ
    • originalHTML(Webアプリケーションで使用)- 画面のHTML。
  • WebpageContentエンティティ
    • Content(Webアプリケーションで使用)- ユーザーがフィードバックを送信したときにHTMLで参照されるすべてのリソース
  • FeedbackScreenshotエンティティ
    • ImageBinary(モバイルアプリケーションで使用)- フィードバックを送信した際のユーザー画面のスクリーンショット。
  • FeedbackSoundMessageエンティティ
    • SoundBinary(モバイルアプリケーションで使用)- フィードバックを送信した際に録音された音。

ユーザーのフィードバック自体に加えて、できるだけ多くのコンテキストを提供するため、一部の詳細なメタデータも保存されます。以下はこの情報の一部です。

  • ユーザーの氏名
  • ユーザーのユーザー名
  • ユーザーのメール
  • 使用しているブラウザ
  • 使用しているデバイス(モバイルアプリで)
  • 使用しているOS

個人データの難読化/除去の例

本番環境以外では、収集した個人データ(エンドユーザーの名前など)が重要でないため、マスキングや削除が必要なケースがあります。たとえば、トラブルシューティングが目的の場合は、実際の本番データベースのクローン使用したほうがよいかもしれません。あるいは、新機能のテストを実行するためには、本番前環境で実際の本番データを使用したほうがよいかと思われます。

こうした状況において、OutSystemsシステムのアプリケーションが収集した個人データを差し替えたり、削除したりする方法を以下に例示します。

ユーザー

以下のSQLスニペットで、UserエンティティのNameUsernameEmailMobilePhone番号をマスクします。

UPDATE ossys_User
SET
    NAME =  CONCAT('User_', ID),
    USERNAME = CONCAT('User_', ID),
    EMAIL = CONCAT('user_', ID, '@email.com'),
    MobilePhone = ''
WHERE
    USERNAME <> 'admin';

注記: adminは内部プラットフォームユーザーで更新できません。admin以外のユーザーはプラットフォームで新規作成されます。

このSQLスニペットは、本番環境で使用しないでください。エンドユーザーのユーザー名とメールがすべて変更され、エンドユーザーがサポートなしにはログインできなくなります。

システムログイン試行

以下のSQLスニペットによって、LoginAttemptシステムエンティティからログイン試行のログがすべて削除されます。

DELETE FROM OSSYS_LOGIN_ATTEMPT;

このSQLスニペットは、本番環境で使用しないでください。
ログイン試行のログを削除することで、個人データは消去されますが、それと同時に以前は総当たり攻撃を保護するシステムによって阻止されていたはずのユーザー/IPがすべて阻止されなくなります。

ユーザーログイン試行

以下のSQLスニペットを使用して、UsersモジュールのLoginAttemptエンティティの物理テーブル名を検索します。

SELECT PHYSICAL_TABLE_NAME
FROM ossys_Entity
WHERE
    NAME = 'LoginAttempt'
    AND
    ESPACE_ID = (SELECT ID FROM ossys_Espace WHERE NAME = 'Users')

次に、以下のSQLスニペットで物理テーブル名を使用してユーザーのログイン試行のログをすべて削除します。

DELETE FROM <検索された物理テーブル名>;

ここで<検索された物理テーブル名>は、上記の手順で検索したUsersモジュールのLoginAttemptエンティティの物理テーブル名です。

このSQLスニペットは、本番環境で使用しないでください。
ログイン試行のログを削除することで、個人データは消去されますが、それと同時に以前は総当たり攻撃を保護するシステムによって阻止されていたはずのユーザー/IPがすべて阻止されなくなります。

メール

以下のSQLスニペットによって、送信済みメールと未送信メールの情報や内容がすべて削除されます。

DELETE FROM OSSYS_EMAIL;
DELETE FROM OSSYS_EMAIL_CONTENT;

ログ

以下のSQLスニペットによってすべてのService Centerの全般的なログテーブルからログイン試行に関するログエントリがすべて削除されます。

DELETE FROM oslog_General_0
WHERE Message LIKE 'Login (%';
DELETE FROM oslog_General_1
WHERE Message LIKE 'Login (%';
DELETE FROM oslog_General_2
WHERE Message LIKE 'Login (%';
DELETE FROM oslog_General_3
WHERE Message LIKE 'Login (%';
DELETE FROM oslog_General_4
WHERE Message LIKE 'Login (%';
DELETE FROM oslog_General_5
WHERE Message LIKE 'Login (%';
DELETE FROM oslog_General_6
WHERE Message LIKE 'Login (%';
DELETE FROM oslog_General_7
WHERE Message LIKE 'Login (%';
DELETE FROM oslog_General_8
WHERE Message LIKE 'Login (%';
DELETE FROM oslog_General_9
WHERE Message LIKE 'Login (%';

アプリのフィードバック

以下のSQLスニペットを使用して、個人情報を含む可能性のあるECT_ProviderモジュールのApp Feedbackエンティティごとの物理テーブル名を検索します。

SELECT PHYSICAL_TABLE_NAME
FROM ossys_Entity
WHERE
    ESPACE_ID = (SELECT ID FROM ossys_Espace WHERE NAME = 'ECT_Provider')
    AND
    NAME IN ('Feedback', 'WebpageContent')

次に、以下のSQLスニペットで各物理テーブル名を使用して、各物理テーブルのデータをすべて削除します。

DELETE FROM <検索された各物理テーブル名>;

ここで<検索された各物理テーブル名>は、上記の手順で検索したECT_Providerモジュールの各エンティティの物理テーブル名です。

注記: WebpageContentエンティティの内容は、外部キーの参照制約により最後に削除する必要があります。

  • Was this article helpful?