Azure存储帐户SAS和Azure虚拟机

时间:2016-11-24 10:05:40

标签: azure azure-storage-blobs azure-virtual-machine

我在Azure上创建了一个linux虚拟机,在同一个订阅和同一资源组中创建了一个Blob存储帐户。

我正在尝试使用共享访问签名从我的虚拟机访问我的存储帐户。

所以我使用我的虚拟机的公共IP生成了一个SAS URL,并尝试从我的Java应用程序访问存储帐户,并且我有一个错误告诉我指定的IP不在授权IP范围内。

我尝试了另一个订阅并得到了同样的东西。

我也尝试使用curl并且总是遇到同样的错误。

错误是:

import javax.swing.*;
import java.awt.*;


public class FirstView {

    private JFrame frame;
    private JTextArea informacionText;  // not sure if that is needed as field

    public FirstView() {
        informacionText = new JTextArea();
        informacionText.setEditable(false);
        informacionText.setBorder(BorderFactory.createLineBorder(Color.BLACK));
        informacionText.setLineWrap(true);
        informacionText.append("Information, bla bla bla");


        JScrollPane scrollPane = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, 
                                                 JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        scrollPane.setBorder(BorderFactory.createLineBorder(Color.BLACK));
        scrollPane.setViewportView(informacionText);


        JPanel infoPanel = new JPanel();
        infoPanel.setLayout(new FlowLayout());
        infoPanel.add(scrollPane);


        JPanel leftPanel = new JPanel();
        leftPanel.setLayout(new BorderLayout());
        leftPanel.add(infoPanel, BorderLayout.NORTH);
        // TODO consider moving above code to an own method returning the left panel

        frame = new JFrame("title");

        frame.setLayout(new BorderLayout());
        frame.add(leftPanel, BorderLayout.WEST);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(900,500);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}

2 个答案:

答案 0 :(得分:0)

根据您提供的错误消息,我假设您在生成SAS令牌时可能已配置了可选参数IP

如官方tutorial中所述:

  

IP。一个可选参数,用于指定Azure之外的IP地址或IP地址范围(请参阅“路由会话配置状态”部分)以接受请求。

请尝试检查您的SAS网址,并查看您是否配置了sip参数。您可以尝试删除可选的IP参数或包含特定的IP并重新生成SAS令牌。

答案 1 :(得分:0)

基于布鲁斯的回答,请注意上面引用的同一文档说“ Azure之外”。我相信,那么将不支持在SAS中使用sip在Azure范围内的IP。对于类似行为,最好的选择是使用Storage Firewall,并允许连接VM的虚拟网络。