はじめに
PowerBIからインターネット経由でRedshiftに接続してみます。
なかなか良い手順がネットで拾えなかったのとRedshiftのパスワードをSHA256でsalt付きで生成する方法も見つからなかったので合わせてメモしておきます。
ちなみにRedshift Serverlessと書きましたがRedshift Spectrum(つまりS3へのクエリも)への接続も確認できました。
Redshiftの設定
インターネット経由でRedshiftに接続するにはパブリックアクセスを有効にする必要があります。
ネットワークとセキュリティの右側にある編集ボタンをクリックします。
「[パブリックにアクセス可能]をオンにする」にチェックします。
反映まで少し時間がかかります。私の場合は2,3分程度でした。
ユーザとグループの作成、権限付与
Redshift QueryEditorを使ってユーザ・グループを作っていきます。
まずはグループを作って権限を付けていきます。今回はXXXスキーマへのSELECT権限だけを付けました。
CREATE GROUP powerbi_group;
GRANT usage on schema XXX to group powerbi_group;
GRANT select on ALL TABLES IN SCHEMA XXX TO group powerbi_group;
次にユーザを作ってグループに所属させていくわけですが、今回はSHA256でSalt付でパスワード生成してみたいと思います。P@ssw0rdというところはお好きなパスワードに変えて実行してください。
import random
import binascii
from hashlib import sha256
def generate_salt(digit_num):
DIGITS_AND_ALPHABETS = "0123456789abcdef"
return "".join(random.choices(DIGITS_AND_ALPHABETS, k=digit_num))
salt = generate_salt(64)
salt_binary = binascii.unhexlify(salt)
print('sha256|',sha256(b"P@ssw0rd" + salt_binary).hexdigest(),'|',salt, sep='')
こんな文字列が出力されると思います。
sha256|7d15a616d178444ef8f7b52aec5b04dd81eed2b9ecc48ca7b68816c6765ac94c|7be5dc609f1d337eaf61187274dcfc4a82effea558bd2ffbacd384e230960e6e
この文字列を使ってCREATE USER文をつくっていきます。
CREATE USER powerbi PASSWORD 'sha256|7d15a616d178444ef8f7b52aec5b04dd81eed2b9ecc48ca7b68816c6765ac94c|7be5dc609f1d337eaf61187274dcfc4a82effea558bd2ffbacd384e230960e6e' in group powerbi_group
PowerBIから接続する
PowerBIを開き「データを取得」→「詳細」をクリックしRedshiftを選択します。
RedshiftのServer, Databaseを設定します
「ユーザー名」と「パスワード」を入力します
テーブルをクリックしてデータがプレビューできていれば権限の設定もばっちりです。
今回は扱うデータが多いのでDirect Queryを選択しました。
あとはこんな感じでいつも通りグラフを作っていきます
参考