🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

Q&A

解決済

1回答

11302閲覧

Xamarin.FormsアプリからAzureのDBにアクセスする方法

takapi_cs

総合スコア349

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

0グッド

0クリップ

投稿2019/09/13 01:10

前提・実現したいこと

Xamarin.Formsでアプリ開発しています。
スマホアプリからAzure Database for PostgreSQL(またはfor MySQL)を使用してDBのアクセスを行いたいと考えています。

発生している問題・エラーメッセージ

アプリから直接DBにアクセスをするのはよろしくないという記事をいくつか見かけました。
【Xamarin】Xamarin.FormsでMySQLに直接接続する
Xamarin で SQL Server と直接接続し DataTable で値を扱う

そこで、2点ほど質問したいのですが、
0. ローカルPCに構築したDBではなく、クラウドのAzureに関しても上記のように直接DBにアクセスするのは悪手となりますか?

  1. 質問1の内容が悪手であるとすれば、AzureのDBアクセス系SDKがNuGet等で用意されていたりしますか?それとも、別途サーバアプリ等を作成して配置する必要がありますか?

試したこと

現在は接続文字列を設定して、直接DBにアクセスしています。

C#

1var connectionString = $"Server={server};Database={database};User ID={user};Password={password}"; 2using (var connection = new NpgsqlConnection(connectionString)) 3{ 4 ... 5}

補足情報(FW/ツールのバージョンなど)

Visual Studio 2019
Xamarin.Forms 4.2.0.709249

Azureはまったく触ったことのない初心者です。
なにか情報をお持ちの方は回答よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

  1. ローカルPCに構築したDBではなく、クラウドのAzureに関しても上記のように直接DBにアクセスするのは悪手となりますか?

ローカルであれクラウドであれ、アプリがDBに直接アクセスできる構成にするのは悪手とされがちです。悪意のある第三者が、DBに直接アクセスして好き勝手にいじれる可能性が出てくるからです。特にクラウドにDBがあった場合、アプリのDB接続情報を読み取った第三者が truncate table hogehoge などというSQLを投げてくるのを止める手立てがありません。
一方、[アプリ]→[Web API]→[DB] のような一般的な構成(DBはWeb APIからしかアクセスできない)であれば、悪意のある第三者といえどもWeb APIで許可された操作しかできません。


  1. 質問1の内容が悪手であるとすれば、AzureのDBアクセス系SDKがNuGet等で用意されていたりしますか?

これは分かりませんが、

それとも、別途サーバアプリ等を作成して配置する必要がありますか?

アプリがDBに直接アクセスするのと比べれば、別途サーバアプリ等を作成するほうが安全です。一般的には。
ただし、サーバアプリ等を作成するコストとアプリがDBに直接アクセスできる環境の危険性を天秤にかけたうえであえて直接アクセスを選択する、というシナリオはありえるでしょう。
(アプリは一般公開しないのでDB接続情報が漏洩する危険は極端に低い、など?)
あまりお勧めはしませんが……。

投稿2019/09/13 01:46

alg

総合スコア2019

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takapi_cs

2019/09/13 01:56

早速のご回答ありがとうございます。 なんとなく「クラウドはセキュリティがちゃんとしてて安全」という印象を勝手に持っていましたが、そういうわけではないのですね。。。
alg

2019/09/13 02:01

「クラウドはセキュリティがちゃんとしてて安全」という印象そのものは割と間違っていないと思います。ただ、そのクラウドに誰がアクセスできるべきかを利用者がちゃんと管理しないといけないですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問