Как зашифровать один или два конкретных столбца в таблице Azure при хранении данных? - PullRequest
0 голосов
/ 24 октября 2018

У меня есть таблица Azure со столбцами

[PartitionKey],[RowKey],[UserId],[UserName],[Email].

Я хочу зашифровать только Username и Emails.Есть ли способ сделать это в Azure Table?Любая помощь приветствуется.Заранее спасибо.

1 Ответ

0 голосов
/ 25 октября 2018

Есть ли способ сделать это в таблице Azure?

Да, в вашей сущности пометьте свойства с атрибутом EncryptProperty

[EncryptProperty]
public string UserName { get; set; }
[EncryptProperty]
public string Email { get; set; }

Мы также могли быобратитесь к этому документу , чтобы получить больше информации о том, как зашифровать табличную сущность.

Я также делаю демонстрацию для нее, ниже приведены подробные шаги.

1.Создатьконсольное приложение .net

2.Установите WindowsAzure.Storage и Microsoft.Azure.KeyVault.Extensions с помощью nuget

3.Добавьтеновый класс с именем User со следующим кодом.

public class User:TableEntity
{
    public string UserId { get; set; }
    [EncryptProperty]
    public string UserName { get; set; }
    [EncryptProperty]
    public string Email { get; set; }
    public User()
    {
        PartitionKey = "Tom";
        RowKey = Guid.NewGuid().ToString();

    }
    public User(string userId, string userName, string email)
    {
        PartitionKey = "Tom";
        RowKey = Guid.NewGuid().ToString();
        UserId = userId;
        UserName = userName;
        Email = email;

    }

}

4.Добавьте тестовый код в Program.cs

static void Main(string[] args)
{
      var connectionstring = "DefaultEndpointsProtocol=https;AccountName=accountName;AccountKey=accountKey";
      CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionstring);
      RsaKey key = new RsaKey("mykey" /* key identifier */);
      // Create the encryption policy to be used for upload and download.
      TableEncryptionPolicy policy = new TableEncryptionPolicy(key, null);
      TableRequestOptions options = new TableRequestOptions
       {
           EncryptionPolicy = policy
       };
       CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
       // Create the CloudTable object that represents the "tomtest" table.
       CloudTable table = tableClient.GetTableReference("tomtest");
       table.CreateIfNotExists();
       //var insertList = new List<User>();
       var user = new User { UserId = Guid.NewGuid().ToString(),UserName="tom1",Email="tom1@email.com" };
       table.Execute(TableOperation.Insert(user), options);
       TableRequestOptions retrieveoptions = new TableRequestOptions
       {
           EncryptionPolicy = policy
       };
       var query = new TableQuery<User>().Where(TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, user.RowKey));
       var list = table.ExecuteQuery(query, retrieveoptions);
       foreach (User entity in list)
       {
          Console.WriteLine($"PartionKey:{entity.PartitionKey},RowKey:{entity.RowKey},userId:{entity.UserId},UserName: {entity.UserName},email:{entity.Email}");
       }

       Console.ReadKey();
   } 

5. Проверьте его с помощью обозревателя хранилищ Microsoft Azure

enter image description here

6. Извлечь сущность таблицы из таблицы и вывести на консоль

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...