※ 本記事は2017年8月24日に公開されたものです。
近年のサイバー攻撃の原因の多くを占めているもののひとつに何らかの方法でOSやデータベースのユーザーの認証情報を盗んで、その認証情報を利用して正規ユーザーになりすましてデータにアクセスするというものがあります。
ユーザーの認証情報を盗む手段もいろいろあります。ユーザー名/パスワードがメモされているものを盗み見られることも多いです。物理的に付箋や手帳書かれていることもありますが、電子データとしてファイルに存在する場合もあります。たとえば、WEBブラウザーにログイン情報を保存している方も多いと思います。パソコンがロックされていない状態で放置されている場合、この保存された認証情報を見られてしまう可能性もあります。
外部からのサイバー攻撃の場合だと、バッチなどのスクリプトの中に記載された認証情報が盗み見られるケースを聞きます。バッチスクリプトの中にデータベースのユーザー名/パスワードをそのまま記載しているシステムは思いのほか多いです。データベースサーバー上にあるスクリプトだけでなく、アプリケーションサーバーや運用管理サーバーなどほかのサーバーや運用端末など、さまざまな場所でデータベースの認証情報がファイルに記載されていることがあります。
ファイルに認証情報が記載されていると、漏えいのリスクが高まるだけでなく、パスワード変更の影響範囲が分からなくなり結果としてパスワードが万が一漏れてしまった場合でもパスワード変更ができなくなってしまうこともあります。
ユーザー名/パスワードを指定せずにデータベースに接続する方法として、SYSDBAのOS認証があります。
[oracle@panca ~]$ sqlplus / as sysdba SQL*Plus: Release 12.2.0.1.0 Production on 木 8月 24 10:47:06 2017 Copyright (c) 1982, 2016, Oracle. All rights reserved. Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production に接続されました。 SQL> show user ユーザーは"SYS"です。 SQL>
ユーザー名/パスワードを指定しなくても、OSのdbaグループのユーザーであればデータベースに管理者特権で接続できる機能です。
スクリプトにユーザー名/パスワードを記載しないほうが良いなら、この機能を利用すればよいと思う方もいらっしゃるかもしれませんが、この方法も適切とは言えません。
管理者特権で接続しますので、アクセス制御が効かずすべてのデータにアクセスできてしまうため、想定外のデータ操作をされてしまう可能性もあります。セキュリティの基本である最小権限の原則を守り、職務分掌を実現することができません。
また、管理者特権は日常的に利用するべきではないため、不正アクセス検知のために管理者特権での操作を監査していた場合には、不正アクセスのログが業務としての利用ログに埋もれてしまいまい、不正アクセスに気づきづらくなります。
そもそも12c以降のマルチテナントアーキテクチャを利用している場合には、SYSDBAのOS認証機能を利用してPDBに接続することはできません。
バッチなどのスクリプトは、パスワード管理機能を持った運用管理製品を利用して実行するようにしてください。
